我尝试使用jquery按照read xml by jquery获取asp生成的xml文件,但是我得到status = parsererror err = TypeError:data为null。在浏览器中输入xml文件会生成一个非常好的xml文件。我希望我不必做一个wget ......
xmlhttp = "http://10.1.10.154:1014/dtsearch_2.asp?cmd=pdfhits&DocId=44&Index=C%3a%5cstream%5cSupport%5cIDX%5fESTATE&HitCount=4&hits=185+1ac+1d5+1ff+&hc=323&req=knife"
$.ajax({
url: xmlhttp,
method: "POST",
dataType: "xml",
success: function(data) {
var xdoc = $(data); // Note that jQuery has already done the parsing for us
alert("Getting tutorials");
var tutorials = xdoc.find("loc");
alert("Found: " + tutorials.length);
tutorials.each(function() {
alert("Tutoral author: " + $(this).attr("pg"));
});
},
error: function(jxhr, status, err) {
alert("Ajax error: status = " + status + ", err = " + err);
}
});
我使用本地IP地址和端口1014,但我不明白为什么其中任何一个都很重要......
谢谢, 尼克
答案 0 :(得分:2)
取出var xdoc = $(data)
,然后直接引用data
。
$.ajax({
url: xmlhttp,
method: "POST",
dataType: "xml",
success: function(data) {
alert("Getting tutorials");
var tutorials = data.find("loc");
alert("Found: " + tutorials.length);
tutorials.each(function() {
alert("Tutoral author: " + $(this).attr("pg"));
});
},
error: function(jxhr, status, err) {
alert("Ajax error: status = " + status + ", err = " + err);
}
});
修改的
这属于Same Origin Policy。如果您需要它在一个单独的端口上,您将需要考虑使用JSONP。
注意强>
从jQuery 1.5开始,jQuery可以将dataType从Content-Type标头中收到的内容转换为您需要的内容。例如,如果要将文本响应视为XML,请对dataType使用“text xml”。您还可以发出JSONP请求,将其作为文本接收,并由jQuery解释为XML:“jsonp text xml”。类似地,诸如“jsonp xml”之类的速记字符串将首先尝试从jsonp转换为xml,如果失败,则从jsonp转换为text,然后从text转换为xml。
$.ajax({
url: xmlhttp,
method: 'POST',
dataType: 'jsonp xml',
success: function(data) {
alert('Getting tutorials');
var tutorials = data.find('loc');
alert('Found: ' + tutorials.length);
tutorials.each(function() {
alert('Tutorial author: ' + $(this).attr('pg'));
});
},
error: function() {
alert('Ajax error: status = ' + status + ', err = ' + err);
}
});