为什么我不能在jsonp请求中看到jquery注入的脚本标记?

时间:2015-06-19 13:46:33

标签: javascript jquery ajax json jsonp

我熟悉JSONP及其工作原理,但我注意到一些令人困惑的事情。

当使用数据类型为“jsonp”的jquery的$ .ajax方法时,我读过的每个帐户都建议jquery将脚本标记注入到dom中以发出请求。

我的代码工作(在我的骨骼测试页面上),但是当我使用Chrome开发工具检查时,我没有看到任何注入的脚本标记。是什么给了什么?

$.ajax({

    url: "https://status.github.com/api/status.json",

    dataType: "jsonp",

    type: "GET",

    success: function( response ) {
        console.log( response ); // successfully logs data from github
    }

});

查看网络选项卡时,这是url jquery请求:

https://status.github.com/api/status.json?callback=jQuery2130779439534759149_1434721871588&_=1434721871589

另外,jquery在哪里放这个函数?

function jQuery2130779439534759149_1434721871588(){
   // my success callback I presume
}

2 个答案:

答案 0 :(得分:1)

这是我不久前在网上看到的(并记录了我的参考资料)。 jQuery做的是它只向DOM添加脚本标记,直到回调(成功函数)执行完毕。标记将添加到标题中。它还为窗口对象添加了一个函数,该函数在返回时被调用。

jQuery2130779439534759149_1434721871588只是一个生活在窗口对象上的对象,是一个动态添加的函数。当函数完成执行时,它将从窗口对象中删除它自己。

回调相关函数(来自缩小的jQuery源)如下所示。

function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}

希望有所帮助。

答案 1 :(得分:0)

它实际上被添加然后删除 - 如果你检查你的DOM - 特别是在递归调用的情况下 - 你会看到DOM亮点(在Chrome开发工具中) - 无论何时进行调用 - 你可以观察到{{1执行后添加和删除标记。