Javascript 当字段事先未知时,如何使用js或jquery解析xml?

Javascript 当字段事先未知时,如何使用js或jquery解析xml?,javascript,jquery,ajax,xml,Javascript,Jquery,Ajax,Xml,在过去的一个小时里,我一直在寻找,但没有找到一个适合我的情况的解决方案。我有一个事件注册表单,为了让用户自动填充表单,他们可以从以前的注册中指定一个id。有20多个领域 一切都很顺利。我有一个为ajax创建xml响应的PHP脚本。xml的格式是 <response> <field1>f1</field1> <field1>f2</field1> etc </response> 上面的工作很好,但我不

在过去的一个小时里,我一直在寻找,但没有找到一个适合我的情况的解决方案。我有一个事件注册表单,为了让用户自动填充表单,他们可以从以前的注册中指定一个id。有20多个领域

一切都很顺利。我有一个为ajax创建xml响应的PHP脚本。xml的格式是

<response>
    <field1>f1</field1>
    <field1>f2</field1>
    etc
</response>
上面的工作很好,但我不想手动写出每个表单字段分配。我想做一个循环。在success函数中是这样的:

 var fields= xmlResponse.getElementsByTagName("response");
 for (i = 0; i < fields.length; i++) {
          // not sure what to put here...
 }
但这并没有返回值

你知道如何最好地做到这一点吗?我觉得我很快就能让它工作了!谢谢

您可以使用,然后使用
.each()
循环元素


你在正确的轨道上。归根结底,当您解析XML文件时,解析器并不关心字段是什么,它将按照它所看到的方式解析它。基本上,您必须告诉脚本使用特定文本提取特定标记。据我所知,最好使用.tagName属性和标记的值并将其存储在对象中

var data={}
$(this).children().each(function() {
    data[this.tagName]=$(this).text();
})
您可以在这里看到这是如何工作的:


谢谢!它现在正在工作。但是在我的php脚本中,我必须删除header('Content-type:text/xml')调用。通过该调用,返回到ajax调用的xml变量的数据类型似乎与代码所期望的不同。再次感谢!
$("#" + fields[0].childNodes[i]).val(fields[0].childNodes[i].nodeValue);
var $xml = $.parseXML(xml);
$("#response", xml).children().each(function(i, e) {
    var field = e.tagName;
    var value = e.innerHTML;
    $("#" + field).val(value);
});
var data={}
$(this).children().each(function() {
    data[this.tagName]=$(this).text();
})