我正在尝试从具有跨域支持的 php 服务器访问数据。因此,当我尝试使用 dataType : 'jsonp' 的 $.ajax 时,控制台中出现错误: Uncaught SyntaxError: Unexpected token 该文件被解释为 javascript 文件,请求失败。您有办法在不出现此错误的情况下获取数据吗?
$.ajax({
url : 'http://domaine.com/json.php',
contentType: "application/json; charset=utf-8",
dataType : 'jsonp',
success : function(data){
console.log(data);
// no enter in this callback
},
complete: function(data1, data2, data3){
// no data from file.js
}
});
最佳答案
首先确保您的 PHP 脚本支持 JSONP。确定需要传递的查询字符串参数,以便脚本返回 JSONP。然后在浏览器中直接在地址栏中输入以下地址进行测试:
http://domain.com/json.php?callback=abc
您应该看到类似以下内容:
abc({ ... some JSON here ... })
如果您的 PHP 脚本需要不同的名称参数,您可能需要调整 callback
名称参数。如果您看到以下输出({ ... some JSON here ... }
未包装在您的 javascript 函数中),则可能是这种情况
一旦您确保拥有返回 JSONP 的有效 PHP 脚本,您就可以使用它:
$.ajax({
url : 'http://domain.com/json.php',
jsonp: 'callback',
dataType : 'jsonp',
success : function(data){
console.log(data);
// no enter in this callback
},
complete: function(data1, data2, data3){
// no data from file.js
}
});
注意事项:
- 我已使用
jsonp: 'callback'
参数指定回调 - 我已经摆脱了
contentType: 'application/json'
参数,因为 jQuery 的 JSONP 实现使用script
标签,它不允许您设置任何请求 header .
关于javascript - 让 JSONP 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15054582/