Javascript 正确使用JSONP
要成功地使用JSONP(例如通过jquery-$.ajax…等),必须始终确保请求的页面设计为提供与此格式对应的数据 换句话说,如果我对一个纯静态内容(即没有php、aspx等)的页面执行请求,我还会得到一个错误吗 对于一些用户来说,这个问题似乎微不足道,但我现在开始学习这些技术,事情有点复杂 基于这些()引用,似乎使用JSONP的请求和服务器响应的实现之间必须保持一致性 编辑 我有这个jQuery请求Javascript 正确使用JSONP,javascript,jsonp,Javascript,Jsonp,要成功地使用JSONP(例如通过jquery-$.ajax…等),必须始终确保请求的页面设计为提供与此格式对应的数据 换句话说,如果我对一个纯静态内容(即没有php、aspx等)的页面执行请求,我还会得到一个错误吗 对于一些用户来说,这个问题似乎微不足道,但我现在开始学习这些技术,事情有点复杂 基于这些()引用,似乎使用JSONP的请求和服务器响应的实现之间必须保持一致性 编辑 我有这个jQuery请求 $.ajax({ url: "https://sites.google.com/si
$.ajax({
url: "https://sites.google.com/site/problemsstore/javascript/test.js",
type: 'GET',
crossDomain: true,
dataType: 'jsonp',
dataCharset: 'jsonp',
success: function (result) {
console.log('request succeed');
},
error: function (result) {
console.log('failed');
}
});
我已经加载了https://sites.google.com/site/mysite/javascript/test.js?attredirects=0&d=1
此test.js文件:
function myCall(data) {
console.log('succeed');
}
myCall({ some : "data" });
连接后,我希望获得控制台的输出:成功
相反,我得到的是:
succeed
failed
Edit2
$.ajax({
url: "https://sites.google.com/site/bentofelicianolopez/jscript-jsonp/test.js?attredirects=0&d=1",
type: 'GET',
crossDomain: true,
dataType: 'jsonp',
dataCharset: 'jsonp',
jsonp: 'myCall',
//contentType: 'application/json',
success: function (result) {
console.log('request succeed');
},
error: function (result) {
console.log('failed');
}
});
.js文件:
myCall({ some : "data" });
输出:
failed test4.html:94:9
ReferenceError: myCall is not defined /*this is the syntactical error of which I said*/
test.js:1:1
要成功使用JSONP(例如,通过jquery-$.ajax…等),必须始终确保请求的页面设计为提供与此格式对应的数据
对。只有当响应表示为JSONP时,JSONP请求才会起作用
换句话说,如果我对一个纯静态内容(即没有php、aspx等)的页面执行请求,我也会得到一个错误
您可以有一个符合JSONP格式的静态JavaScript程序(它需要硬编码回调函数名),因此不一定 JSONP是一种利用脚本可以跨不同来源加载这一事实绕过相同来源策略的黑客。为了使黑客能够工作,服务器和客户端之间必须有协议。
crossDomain:true,
阻止jQuery向XHR添加仅为同一来源请求添加的头(如果同一来源向不同来源进行HTTP重定向)。对于一个开始是跨源的请求来说,这是毫无意义的,并且对JSONP请求没有任何影响(因为无法控制那里的头)dataCharset
不是jQuery ajax设置对象所接受的属性,所以不可能使用这种方法简单地检查网络连接的存在吗(使用任意域)?请求总是会返回一个错误?关于您答案的第二部分,您能给我提供一个示例的参考吗?@Bento-Err.example.js的内容:someCallbackName({“some:”data“})
该站点必须提供一个返回JSONP数据的URL。该JavaScript程序就是JSONP数据。由于您无法将真正的JavaScript文件放在那里,因此看起来是这样的。