1

我有一个返回 xml 响应的 ajax 调用。我想获取此响应中的一个元素的值,即“某个名称”。问题是响应中有 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);

我这里还有一个 js 小提琴:http: //jsfiddle.net/8FqRd/5/

编辑:修复如下:

我的 ajax 响应已经是 xml 格式,所以不需要解析。这条线对我有用:

var user = $(xmlResponse).find("userId").find("name").text();
4

2 回答 2

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);
于 2013-10-29T14:03:45.973 回答
0

正如蒂姆指出的那样,您需要使用$.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/以获得演示

于 2013-10-29T14:14:06.593 回答