我只是调试了一些东西而且我注意到每当我从我的插件调用带有$ .getJson的web服务时,webservice url会在html的头部添加一个脚本标记一会儿,然后再次消失。 script标记还具有async属性。
这是正常行为吗?
$.getJSON(options.url, function(data) {
self.Address = data;
self.AddressWSCallback();
});
答案 0 :(得分:0)
根据Cody Lindley的jQuery Cookbook
如果请求是跨域的,jQuery会自动将此请求视为JSONP并填写相应的回调函数名称。这也意味着jQuery将通过在文档中插入标记而不是使用XMLHttpRequest对象来启动请求。
Cross-Domain requests in javascript JSONP依赖于标签可以来自不同来源的事实。当浏览器解析标记时,它将获取脚本内容(驻留在任何源上)并在当前页面的上下文中执行它。通常,服务将返回HTML或以XML或JSON等数据格式表示的某些数据。但是,当向启用JSONP的服务器发出请求时,它会返回一个脚本块,该脚本块执行调用页面指定的回调函数,并将实际数据作为参数提供。