我正在开发我的网络应用程序并在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');
}
})
但是我得到了同样的错误...更多建议请...谢谢。
答案 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/xml
或text/xml
正如其他评论所示,您的网址是否位于其他网域?如果没有,那么请尝试使用相对URL。
答案 4 :(得分:0)
1302610001570用于测量响应,
你检查过响应是否创建了有效的xml?