我从PHP页面输出这个XML并在jQuery中解析结果:
<?xml version="1.0" encoding="UTF-8"?> <response> <row> <webpage_tag_id>2096</webpage_tag_id> <stackPageID>Test</stackPageID> </row> <row> <webpage_tag_id>2175</webpage_tag_id> <stackPageID>Test</stackPageID> </row> </response>
当我在jQuery中console.log结果时,我得到:
[Object, Object]
0: Object
STACKPAGEID: "Test"
WEBPAGE_TAG_ID: "2096"
__proto__: Object
1: Object
STACKPAGEID: "Test"
WEBPAGE_TAG_ID: "2175"
很好,但为什么这些字段大写?问题是以下代码输出“undefined”:
$.each(updateArr, function(index,item) {
console.log(item.webpage_tag_id);
});
...但这会返回正确的结果:
$.each(updateArr, function(index,item) {
console.log(item.WEBPAGE_TAG_ID);
});
有没有人听说过这样的问题?
这是我用来解析的功能:
$(xml).find("row").each(function () {
var idx=0;
var name='';
var $currentNode = $(this);
var rowObj = new Object();
var nodeName = $currentNode.children()[idx].nodeName;
while( nodeName )
{
rowObj[nodeName] = $currentNode.find(nodeName).text();
if ($currentNode.children()[idx]) {
nodeName = $currentNode.children()[idx].nodeName
} else {
nodeName=false;
}
idx++;
}
arr.push(rowObj);
});
答案 0 :(得分:3)
$(string)
将字符串解析为 HTML (使用DOM API),浏览器将其标准化为大写。
你想要$.parseXML(xml)
,它返回一个真正的XML DOM
您可能还想围绕它创建一个jQuery对象。 ($(XML DOM element)
很好,不会解析为HTML)