我熟悉 JSONP 及其工作原理,但我注意到一些令人困惑的事情。
当使用数据类型为“jsonp”的 jquery 的 $.ajax 方法时,我读过的每个帐户都表明 jquery 会将脚本标记注入(inject)到 dom 中以发出请求。
我的代码可以工作(在我的基本测试页面上),但是当我使用 Chrome 开发工具检查时,我没有看到任何注入(inject)的脚本标记。给出了什么?
$.ajax({
url: "https://status.github.com/api/status.json",
dataType: "jsonp",
type: "GET",
success: function( response ) {
console.log( response ); // successfully logs data from github
}
});
查看网络选项卡时,这是 jquery 请求的 url:
还有,jquery把这个函数放在哪里了?
function jQuery2130779439534759149_1434721871588(){
// my success callback I presume
}
最佳答案
这是我不久前在网上读到的内容(并记下以供引用)。 jQuery 的作用是仅将脚本标记添加到 DOM,直到回调(成功函数)执行完毕。该标签被添加到标题中。它还向窗口对象添加了一个函数,该函数在返回时被调用。
jQuery2130779439534759149_1434721871588
只是一个生活在window对象上的对象,是一个动态添加的函数。当函数执行完毕后,它将把自己从窗口对象中删除。
回调相关函数(来自缩小的 jQuery 源代码)如下所示。
function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}
希望有帮助。
关于javascript - 为什么在jsonp请求中看不到jquery注入(inject)的script标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30939787/