jquery从asp检索xml的问题

时间:2011-04-05 02:18:20

标签: jquery xml ajax asp-classic

我尝试使用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,但我不明白为什么其中任何一个都很重要......

谢谢, 尼克

1 个答案:

答案 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);
    }
});

参考 http://api.jquery.com/jQuery.ajax/