【问题标题】:Parse xml POST response in AJAX在 AJAX 中解析 xml POST 响应
【发布时间】:2018-01-18 23:17:43
【问题描述】:

我在 AJAX 中执行 POST 请求,当我收到响应时,如果我尝试提醒它,例如,我会得到:

[object XMLDocument]

这是我的代码:

$(document).ready(function(){
$("button").click(function(){
    var inputreg = document.getElementById("reginput").value;
    $.post("linkhere...",
    {
      RegistrationNumber: inputreg,
      username: "myusername",
      dataType: "xml"
    },
    function(data){
        alert(data);
    });
}); });

我正在尝试从 xml 中获取某个值,例如“描述”..

编辑: 以下是部分回复:

<vehicleData>
<ABICode>12345</ABICode>
<Description>lorem ipsum</Description></vehicleData>

【问题讨论】:

  • alert() 不是调试工具。您传递给它的任何内容都将转换为字符串(通过Object.prototype.toString())。试试console.log(data)(当然要打开你的控制台)
  • 另外,您错误地使用了$.post()dataType 应该作为第三个参数传递,例如$.post(url, function(data) { ... }, 'xml')。假设您不想在请求正文中实际发布dataType=xml
  • 好吧,如果我执行 console.log(data),然后打开控制台,我会得到正确的 xml 响应,但是我怎样才能从那个 xml 中获取一个值呢?例如,描述?
  • 您可以使用 DOM 方法来遍历文档,就像 HTML 页面一样。例如data.getElementsByTagName('Description')

标签: jquery ajax xml parsing post


【解决方案1】:

鉴于dataXMLDocument,您可以在其上使用DOM 方法来导航和检索值。例如

let description = data.querySelector('Description').textContent

这是一个例子

// ignore this section, it's just setting up the XML document
//////////////////////////
const xml = `<vehicleData>
<ABICode>12345</ABICode>
<Description>lorem ipsum</Description></vehicleData>`

const parser = new DOMParser()
const data = parser.parseFromString(xml, 'text/xml')
//////////////////////////

console.info(data.querySelector('Description').textContent)

【讨论】:

  • 我分配了 const xml = data;之后你建议的代码,但我得到'Uncaught TypeError: Cannot read property 'textContent' of null' 在我的控制台内..
  • @alexcr 真的不知道你为什么要这样做。我的示例中的 xml 只是为了模拟 AJAX 请求返回的数据。重要的部分是data.querySelector('Description')。如果这不起作用,那么您的 XML 就不是 real 数据 的好例子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 2014-04-17
  • 2015-11-06
相关资源
最近更新 更多