我有一些代码可以使用 jquery 1.9 调用其他几个站点(跨域),这迫使我在 ajax 调用中使用 jsonp 而不是 json:
.ajax({
type : "POST",
url : "http://web.company.com/login/?login_only=1&callback=photos",
data : "user="+ username,
crossDomain : true,
dataType : "jsonp",
但是,它总是返回解析错误:
语法错误:缺少;声明之前 {“status”:1,“redirect”:“/cpsess9236070602/web/x3/index.html?登录
我知道这可能是因为响应严格来说不是 jsonp 格式。如何在此处捕获重定向变量而不出现 jsonp 错误?
最佳答案
如果响应不是 JSONP,那么除非您控制服务器端,否则您无能为力。
JSONP 响应实际上不会发生解析。 JSONP 响应只是一个以 JavaScript 对象或数组作为参数的函数调用。 jQuery 会将响应包含为 <script>
标签,执行 JavaScript,因此如果没有函数调用(例如常规 JSON 响应),那么您将无法访问内容。
一种可能的解决方案是通过与您的 JavaScript 位于同一域上的服务器端脚本来代理请求,使用第三方的服务器到服务器调用,这样就不会受到跨域限制。
关于javascript - 如何防止 AJAX 调用中的 JSONP 解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23092412/