javascript - 为什么在jsonp请求中看不到jquery注入(inject)的script标签?

标签 javascript jquery ajax json jsonp

我熟悉 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:

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

还有,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/

相关文章:

javascript - 在 contenteditable 中,如何在 Enter 键按下时在 blockquote 之后添加一个段落?

javascript - 在 Bokeh 中显示裁剪后的图像

javascript - 如何将div的信息放入弹出框中?

javascript - 从数据库中提取 javascript 代码,通过 jquery 插入它

javascript - AJAX在表单提交上上传图像

Javascript AJAX 调用 SpringBoot Controller 并获取 JSON 响应

javascript - 简单的 javascript 函数 - if 语句未触发?

javascript - 如何使用JavaScript/Ajax和Python编辑本地SQL数据库?

javascript - 隐藏和显示列字段

php - ajax请求后获取json中的值