JQuery 没有从成功加载 xml

JQuery is not loading xml from success

本文关键字:加载 xml 成功 JQuery      更新时间:2023-09-26

我有一个jQuery,它发布到一个php文件并返回xml。我似乎无法加载和提醒特定字段part_note。在 Jquery 中,我有一个"数据"警报,它显示了返回的 xml。任何帮助将不胜感激。

它加载的 XML 是:

<qdbapi>
    <record>
        <related_bid>48</related_bid>
        <part_note>This is a note 1</part_note>
        <record_id_>24</record_id_>
        <update_id>1417012758913</update_id>
    </record>
</qdbapi>

我的jQuery:

$.post('/business/data/update_detail.php' , field_userid + "=" + value, function(data){
                if(data == 'error')
                {
                 var field = document.getElementById(field_userid);
                     document.getElementById(field_userid).className = "error";
                }
                else {
                  alert(data);
                  $(xml).find("record").each(function()
                  {
                    alert($(this).find("part_note").text());
                  });
                }
});

尝试使用 $.ajax 方法的显式形式,其中第一个参数不是字符串,而是一个对象,显式包含 dataType:'xml'。这是 API 页面

$.ajax({
  type: 'POST',
  url: "/test.php",
  dataType: 'xml' // magic is here!
}).done(function(data) {
  console.log(data);
});
$.ajax({
  type: 'POST',
  url: "/business/data/update_detail.php",
  data: your_data_to_post,
  dataType: 'xml',
  success: function(response_data) {
     //do what you want to do after POST 
  }
}).fail(function(xhr, status, error_string) {
   //do what you want to do if POST failed
})

你没有一个名为 xml 的变量,因此你的代码应该如下所示。由于您的响应是一个字符串,因此您希望使用 $.parseXML() 来解析 XML 字符串。

  alert(data);
  var xml = $.parseXML( data );
  $(xml).find("record").each(function()
  {
      alert($(this).find("part_note").text());
  });

这是一个演示,展示了如何解析它;实际上你只缺少一行:var xml = $.parseXML( data );。其他一切都很好。

var data = 
'<qdbapi>'
    <record>'
        <related_bid>48</related_bid>'
        <part_note>This is a note 1</part_note>'
        <record_id_>24</record_id_>'
        <update_id>1417012758913</update_id>'
    </record>'
</qdbapi>';
alert( data );
var xml = $.parseXML(data);
$(xml).find("record").each(function() {
    alert($(this).find("part_note").text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>