2011-02-26 110 views
3

这是我如何使用$.ajax

var link = "http://www.myapp.net/..." 

$.ajax({ 
    url: link, 
    cache: false, 
    async: false, 
    success: function(html){ 

    }, 
    error: function(){ 

    } 
}); 

请求的结果,或者是一个空白页面或只是一个数字的页面。所以错误回调实际上不应该被触发,只要请求不失败。

但我一直得到以下错误

alert(jqXHR + "-" + textStatus + "-" + errorThrown); 

enter image description here

Here is some information about the error code in the picture

我跑我的本地主机上的项目。 ajax代码中的链接指向Web上的另一个项目。

任何想法?

+1

你确定错误得到执行?我的意思是,错误和成功回调做同样的事情...你有没有尝试过一个简单的警报('错误执行')在错误回调? – usoban 2011-02-26 12:42:08

+0

你怎么能说错误函数总是被执行? – krtek 2011-02-26 12:42:11

+1

是与'$ .ajax'脚本位于同一个域的网址吗?你可能会被相同的原产地策略咬伤。 – xzyfer 2011-02-26 12:44:35

回答

5

如果ajax调用无法完成 - 即,如果url位于不同的域(或者如果您正在从本地文件运行它),如果请求超时或服务器回应一个错误代码。

我猜这是一个域(相同来源)的政策错误

更新:如果你想要做跨域Ajax,只是说看看James Padolsey's jQuery snippet(使用雅虎的公共代理,使所有! jQuery Ajax调用跨域)

+0

现在我在我的本地主机上运行我的项目。 ajax代码中的url指向另一个页面。什么可以解决问题? – 2011-02-26 14:27:46

+0

从该网址运行您的网站。 – 2011-02-27 13:33:33

+0

@艺术你不得不在本地主机上建立服务器端“代理”(服务器端代码可以发送请求到不同的域),然后使用它,或将代码移动到与其他页面相同的域。除此之外,只有改变远程页面使用'jsonp'才能解决问题。 – 2011-02-27 13:35:27