Safari jquery ajax重定向

时间:2012-06-05 04:50:39

标签: jquery

我正在对外部服务器进行$ .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发送的重定向。我不确定为什么请求被取消(似乎由响应表明)。

有人可以提供一些帮助吗?

1 个答案:

答案 0 :(得分:1)

恕我直言,这是一个跨域(起源)问题。默认情况下,您的浏览器不会跨浏览器ajax请求。您应该尝试使用jsonp而不是json:

dataType:"jsonp"

但这仅在服务器支持jsonp时才有效(在这种情况下,您还需要指定回调函数的名称)。

如果不支持jsonp,您可以从服务器创建代理。基本上它甚至不需要。而不是重定向只是从第三方服务器“下载”文件并将其作为响应输出。

如果这只适用于较新的浏览器,那么你可以尝试this(这是更好的解决方案,然后服务器端“代理”恕我直言)