为什么我的jQuery ajax调用不成功

时间:2011-04-12 12:21:29

标签: javascript ajax jquery

我正在开发我的网络应用程序并在localhost:8080上运行它,在我的js文件中,我有一个ajax调用来从服务器获取xml数据:

$.ajax({
        url: 'http://COMPANY_DOMAIN.com/company-interface/the-id',
        type: 'GET',
        async: false,
        dataType: 'application/xml',
        data: {id: 43},
        success: function(data) {

            alert(data);

        },
        error: function(xhr, status, error){
            alert('error happens');
        }
     })

我可以访问网址 http://COMPANY_DOMAIN.com/company-interface/the-id/?id=43 ,这将在浏览器上显示xml结果,但我的上述ajax调用总是如此转到错误功能。

我检查了firebug,'xml'标签显示“ XML解析错误:找不到元素位置:moz-nullprincipal:{9fd0dca8-cf07-4401-b1de-ab04e8aa00bc}第1行,第1列:“和firebug显示URL GET http://COMPANY_DOMAIN.com/company-interface/the-id/?id=43& = 1302610001570 即可。

为什么firebug GET会显示“ ...& = 1302610001570 ”?这是什么意思?为什么我的ajax调用失败了,虽然我可以访问该URL?

---------------- EDIT ---------------

嗨,我改为使用 localhost 请求,如:

$.ajax({
            url: 'http://localhost:8080/company-interface/the-id',
            type: 'GET',
            async: false,
            dataType: 'xml',
            data: {id: 43},
            success: function(data) {

                alert(data);

            },
            error: function(xhr, status, error){
                alert('error happens');
            }
         })

但是我得到了同样的错误...更多建议请...谢谢。

5 个答案:

答案 0 :(得分:3)

这可能是由于跨域访问控制。您正在访问计算机上试图连接到其他网站的站点。除非您定义Access-Control-Allow-Origin标题,否则不允许这样做。

同样正如@Craig所说,内容类型为xml需要更改。

答案 1 :(得分:1)

Javascript受same origin policy约束。您在localhost上运行的脚本无法访问COMPANY_DOMAIN.com。

答案 2 :(得分:1)

尝试以下代码:

 $.ajax({
            url: 'http://localhost:8080/company-interface/the-id',
            type: 'GET',
            async: false,
            dataType: 'text',
            data: {id: 43},
            success: function(data) {

            // Assume response like..
            // <note>
            //    <from>Jani</from>
            //    <to>Tove</to>
            //    <message>Remember me this weekend</message>
            //  </note>

            xmlDoc = $.parseXML( data ),
            $xml = $( xmlDoc ),
            $message = $xml.find("message")
            alert($message.text());
            $("#xmlResonse").html($message.text());

        },
        error: function(xhr, status, error){
            alert('error happens');
        }
     })

答案 3 :(得分:0)

将您的数据类型更改为application/xmltext/xml

正如其他评论所示,您的网址是否位于其他网域?如果没有,那么请尝试使用相对URL。

答案 4 :(得分:0)

1302610001570用于测量响应,

你检查过响应是否创建了有效的xml?