使用jQuery在Ajax结果中查找节点

时间:2014-12-05 16:58:48

标签: javascript jquery ajax xml

我的JavaScript代码正在进行Ajax调用以检索XML文档,而我很难从结果中提取特定节点。

返回的XML本质上是键/值对的集合,我想提取给定键的值。为了便于讨论,我们假设返回的XML如下所示:

<result>
    <keyvaluepair>
        <key>aaa</key>
        <value>1234</value>
    </keyvaluepair>
    <keyvaluepair>
        <key>bbb</key>
        <value>5678</value>
    </keyvaluepair>
</result>

我的Ajax调用如下所示:

$.ajax({
    type: "POST",
    contentType: "text/xml; charset=utf-8",
    datatype: "xml",
    processData: false,
    url: "MyPage.aspx",
    success: function (data, textStatus, xhr)
    {
        var myValue = parseInt($("???", data).text());
    }
);

找到与给定键相关联的值的合适方法是什么,比如“bbb”?

1 个答案:

答案 0 :(得分:2)

JQuery也解析XML,所以这样的东西应该有所帮助:

success: function (data, textStatus, xhr)
{
    var myValue = $(data).find('key[value="bbb"]').next('value').text();
}

结果[value=]无法在此处工作,因此请使用:contains获取唯一值,或使用filter完全匹配修剪后的文字内容:

使用contains的示例:http://jsfiddle.net/TrueBlueAussie/uhramdmx/

或者更好,filterhttp://jsfiddle.net/TrueBlueAussie/uhramdmx/2/

var myValue = $(data).find('key').filter(function(){
    return $.trim($(this).text()) == 'bbb';
}).next('value').text();