我有一些代码用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错误的情况下捕获重定向变量?
答案 0 :(得分:2)
如果响应不是JSONP,那么除非你控制服务器端,否则你无能为力。
JSONP响应实际上没有解析。 JSONP响应只是一个以JavaScript对象或数组作为参数的函数调用。 jQuery会将响应包含在<script>
标记中,执行JavaScript,因此如果没有函数调用(因此使用常规JSON响应),则无法访问内容。
一种可能的解决方案可能是通过与JavaScript相同的域上的服务器端脚本代理请求,使用服务器对第三方进行服务器调用,但不受跨域限制。