【问题标题】:parse xml response with jQuery使用 jQuery 解析 xml 响应
【发布时间】:2009-02-04 11:44:03
【问题描述】:

大家好,
我使用 jQuery 来解析我的 xml 响应。

我有这个 xml:

<?xml version="1.0" encoding="UTF-8"?>
<response status="ok">
  <client_id>185</client_id>
</response>

我想获得“client_id”值。

【问题讨论】:

    标签: javascript jquery xml


    【解决方案1】:

    要在您的请求中将预期的响应数据类型固定为 XML,请将 dataType 参数设置为“xml”。如果你不这样做,jQuery 会使用响应头进行猜测。

    作为options 对象的一部分的$.ajax() 函数以及$.get()$.post() 支持它:

    jQuery.ajax( options )
    jQuery.get( url, data, callback, type )
    jQuery.post( url, data, callback, type )
    

    所以你可以这样做:

    $.ajax({
      type: 'GET',
      url: "foo.aspx",
      data: {
        key: "value"
      },
      dataType: "xml",
      success: function (xml){
        var clientid = $(xml).find('client_id').first().text();
        alert(clientid);
      }   
    });
    

    请注意,从 jQuery 1.5 开始,您可以使用上述 Ajax 请求的更好版本:

    $.get("foo.aspx", {
      key: "value"
    })
    .done(function (xml){
      var clientid = $(xml).find('client_id').first().text();
      alert(clientid);
    });
    

    【讨论】:

    • 这样安全吗?你用 jQuery 解析响应内容,你不确定它是否正确。
    • @Artem 如果响应 Content-Type: 标头类型为 text/xml,则 jQuery 会将响应数据视为 XML。如果它显示application/json,jQuery 会将响应视为 JSON。这很好用。我不确定您所说的“安全”是什么意思。
    【解决方案2】:

    首先,使用 $.get 或您想要的任何方式请求 XML。 那么:

    clientID = $(myXML).find("client_id").text();
    

    【讨论】:

    • 聪明! XML 是一种标记语言.. 是的!
    【解决方案3】:

    使用这样的东西:

    $.ajax({ type: 'GET', url: 'test.xml', dataType: 'xml', success: function(xml){
                $('response', xml).each(function() {alert($(this).find('client_id').text());});         
                }});
    

    【讨论】:

      【解决方案4】:

      只是为了补充,我使用 $.get:

      $.get($('file.xml').val(),{  } , doSomethingWithData); 
      

      函数doSomethingWithData(数据) {

       $(data).find("marker").each(function() {
      
      
              var marker = $(this);
      
      
           alert(marker.attr("lat"));
      
       });
      

      这里 tpicall 使用的 request.responseXML 是本例中的数据,你必须将它封装在 $(data) 中才能工作(这让我头疼了大约 3 小时;S)

                           //    alert(markerh);
      
                      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 2019-12-08
        • 2019-08-10
        • 2012-03-26
        • 2012-03-11
        • 2011-05-10
        • 1970-01-01
        相关资源
        最近更新 更多