我有一个返回xml响应的ajax调用。我想获得此响应中其中一个元素的值,即“Some Name”。问题是响应中有5个或6个这样的标签。有没有办法获得第一个的价值?它始终是我想要使用的第一个。 以下是一些代码:
var xmlData = '<userId internalId="Some Number"xmlns:platformCore="urn:core_2013_1.platform.webservices.netsuite.com"><platformCore:name>Some Name</platformCore:name></userId>';
var $xml = $(xmlData);
var $user = $xml.find("platformCore:name").text();
alert($user);
我在这里也有一个小提琴:http://jsfiddle.net/8FqRd/5/
编辑:以下修正:
我的ajax响应已经是xml格式,所以不需要解析。这条线对我有用:
var user = $(xmlResponse).find("userId").find("name").text();
答案 0 :(得分:0)
主jQuery函数无法正确解析XML:它将其视为HTML,具有可变结果。请改用$.parseXML()
。
我不确定jQuery如何处理XML,尤其是命名空间。我猜不会。但是,按本地名称而不是完全限定名称搜索元素似乎有效。
演示:http://jsfiddle.net/timdown/8FqRd/6/
var xmlData = '<userId internalId="Some Number"xmlns:platformCore="urn:core_2013_1.platform.webservices.netsuite.com"><platformCore:name>Some Name</platformCore:name></userId>';
var $xml = $( $.parseXML(xmlData) );
var $user = $xml.find("name").text();
alert($user);
答案 1 :(得分:0)
Tim指出你需要使用$.parseXML(xmlData)
但是,由于您的xml标记中包含:
,因此您必须将其转义。
var xmlData = '<userId internalId="Some Number" xmlns:platformCore="urn:core_2013_1.platform.webservices.netsuite.com"><platformCore:name>Some Name</platformCore:name></userId>';
var xml = $.parseXML(xmlData);
var $xml = $(xml);
var $user = $xml.find("platformCore\\:name").text(); // you need to escape the :
alert($user);
检查http://jsfiddle.net/8FqRd/7/是否有演示