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

Find a node in Ajax result using jQuery

本文关键字:查找 节点 结果 Ajax jQuery 使用      更新时间:2023-09-26

我的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")的适当方法是什么?

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/

或者更好的是,filter:http://jsfiddle.net/TrueBlueAussie/uhramdmx/2/

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