我正在对外部服务器进行$ .ajax调用。此服务器返回重定向,重定向页面返回一些json。这适用于FF和Chrome,但Safari和Opera不喜欢它。
这是我的$ .ajax代码:
$.ajax(
{
url:url,
dataType:"json",
success:function(data)
{
console.log("success");
},
complete:function()
{
console.log("complete");
}
});
在firefox和chrome中,这可以正常工作 - 我的每个ajax响应都会调用“success”。然而,在野生动物园和歌剧中,“成功”从未被称为“完成”。网络请求控制台为我提供了以下信息:
resolve.json GET 302 application/json
1817995.json GET (canceled) undefined
其中1717995.json是从resolve.json发送的重定向。我不确定为什么请求被取消(似乎由响应表明)。
有人可以提供一些帮助吗?
答案 0 :(得分:1)
恕我直言,这是一个跨域(起源)问题。默认情况下,您的浏览器不会跨浏览器ajax请求。您应该尝试使用jsonp而不是json:
dataType:"jsonp"
但这仅在服务器支持jsonp时才有效(在这种情况下,您还需要指定回调函数的名称)。
如果不支持jsonp,您可以从服务器创建代理。基本上它甚至不需要。而不是重定向只是从第三方服务器“下载”文件并将其作为响应输出。
如果这只适用于较新的浏览器,那么你可以尝试this(这是更好的解决方案,然后服务器端“代理”恕我直言)