如何防止AJAX调用中的JSONP解析?

时间:2014-04-15 19:13:09

标签: javascript jquery ajax jsonp

我有一些代码用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",

但是,它总是返回一个解析错误:

SyntaxError:missing;在声明之前 {"状态":1,"重定向":" /cpsess9236070602/web/x3/index.html登录

我知道这可能是因为响应不是严格的jsonp格式。如何在没有jsonp错误的情况下捕获重定向变量?

1 个答案:

答案 0 :(得分:2)

如果响应不是JSONP,那么除非你控制服务器端,否则你无能为力。

JSONP响应实际上没有解析。 JSONP响应只是一个以JavaScript对象或数组作为参数的函数调用。 jQuery会将响应包含在<script>标记中,执行JavaScript,因此如果没有函数调用(因此使用常规JSON响应),则无法访问内容。

一种可能的解决方案可能是通过与JavaScript相同的域上的服务器端脚本代理请求,使用服务器对第三方进行服务器调用,但不受跨域限制。