jQuery.get()返回错误

时间:2012-03-07 16:38:09

标签: javascript xml jquery get

我是javascript / jquery的新手。

我有以下基本代码,并且一直收到“错误”警告消息:

var jqxhr = $.get('my_url',
                function(data) {
                alert("success");
            })

            .success(function() {
                alert("second success");
            })
            .error(function() {
                alert("error");
            })
            .complete(function() {
                alert("complete");
            });

请注意,如果我在浏览器中复制并粘贴my_url,我会收到一个xml文件。我究竟做错了什么?我怎样才能得到详细的错误描述?

3 个答案:

答案 0 :(得分:1)

你是否在$ .ajaxSettings()函数中将响应类型更改为'text / xml'?

如果你期望'text / html'作为响应类型并获得'text / xml',那么这可能会导致问题。

如果您使用Fiddler,也可以很好地了解响应中实际存在的内容。

答案 1 :(得分:1)

您的错误:

XMLHttpRequest cannot load 'my_url'. Origin null is not allowed by Access-Control-Allow-Origin.

表示您有相同的原始问题。您不能对与主机网页的域不同的域执行ajax调用。

有关同一来源政策中相同来源的详细信息,请参阅this MDN reference

解决方法是使用JSONP(使用不受同一原始策略约束的脚本标记),但这需要更改服务器以支持此操作的JSONP。

答案 2 :(得分:1)

实际上只有三种方法可以解决跨源问题。

  1. 使远程服务器支持CORS
  2. 使用代理脚本或代理服务,例如YQL
  3. 使用支持跨源请求的jsonp数据类型。此解决方案要求服务器返回JSONP而不是XML