这是示例代码。
var s=document.createElement("script");
s.src="http://example.com";
document.body.appendChild(s);
执行最后一行后,将有一个 get 请求。并且响应将是200,我该如何读取此请求的响应。
唯一的方法是如果从该 url 返回的脚本会回拨您。通常它是通过函数名称参数(例如回调(实现的。
例如:您网站上的图片
window.globalCallback = (data) => alert(data)
如果 GET http://example.com?callback=globalCallback 返回一个 javascript 文件,例如:
globalCallback("some data");
然后,您将收到"一些数据"提醒您。简而言之,这就是jsonp。
虽然无法获得实际响应,但可以设置s.onerror
和s.onload
以确定它是否成功加载。
function importScript (sSrc, fOnload) {
var oScript = document.createElement("script");
oScript.type = "text/javascript";
oScript.onerror = loadError;
if (fOnload) { oScript.onload = fOnload; }
document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
oScript.src = sSrc;
}
function loadError (oError) {
alert("The script " + oError.target.src + " is not accessible.");
}
importScript("https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", function() { alert("It Worked"); });
importScript("https://example.com/broken.js", function() { alert("It Worked"); });
如果你确实需要获取实际的响应,你可能需要设置一个代理,以便你可以点击类似https://your-own-server.com/getJsonFrom?src=http://example.com
的东西,然后你可以让你的服务器做请求,然后你正在从你自己的服务器读取响应。
或者,如果您控制了其他服务器,则可以让它返回,而不是
{ some: "data" }
相反,它会返回
callback({ some: "data" });
然后你可以定义callback
来做任何你想做的事情:
function callback(data) {
console.log(data)
}