【问题标题】:Find a node in Ajax result using jQuery使用 jQuery 在 Ajax 结果中查找节点
【发布时间】:2014-12-05 16:58:47
【问题描述】:

我的 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”?

【问题讨论】:

    标签: javascript jquery ajax xml


    【解决方案1】:

    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();
    

    【讨论】:

    • 感谢您的建议。正如你所指出的,"[value=]" 不起作用,但 ":contains" 达到了相同的结果。使用 'find' 和 'next' 的组合效果很好,并给了我想要的结果。
    猜你喜欢
    • 2017-01-27
    • 2012-11-26
    • 2021-10-28
    • 2013-01-17
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多