从ajax结果中提取XML数据

时间:2015-06-11 10:16:53

标签: javascript jquery ajax xml

我的AJAX调用就像这样

$.ajax({
    url: '/services/LTLGadgetV2.aspx',
    type: 'Get',
    success: function (result) {      
        console.log( result);  }
    });

在控制台中我得到了这个结果:

enter image description here 示例XML

  <RateResults xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PriceSheets>
  <PriceSheet type="Cost" CurrencyCode="USD" CreateDate="0001-01-01T00:00:00">
    <LaneID>9553</LaneID>
    <MaxDeficitWeight>19999</MaxDeficitWeight>
  </PriceSheet>
</PriceSheets>
<StatusCode>0</StatusCode>
<StatusMessage>Rating Process completed with no errors</StatusMessage>
<debug>
  <debug>
    <ContractName>2013  Pinnacpccle </ContractName>
  </debug>
</debug>
<PricingModel><![CDATA[<div id="PricingModelDiv" style="position:absolute;display:none;"><table id="myTable" Width = "300" style="font-family:Verdana; background:white; font-size:9" border="1"> </table></div>]]></PricingModel>
</RateResults>

任何人都可以请指出我如何在此响应中获取XML数据,以便我可以对其进行操作?我想将输出解析为适当的XML,如此

   var xmlDocNp;
    xmlDocNp = $.parseXML('<xml>' + result + '</xml>'),
     $xml = $(xmlDocNp),
    pricingModel = $xml.find('PricingModel').text();

但是为了做到这一点,我首先需要从上面的结果中提取XML数据

  

注意:XML数据从RateResults标记

开始
Note: If i put a break-point and checked the result in chrome, it looks like this

enter image description here

2 个答案:

答案 0 :(得分:1)

由于result已经Object,而不是String,因此无需使用$.parseXML()

var $xml = $(result);
var pricingModel = $xml.find('PricingModel').text();

原因是即使您没有在Ajax请求参数中设置dataType结果数据,jQuery也会使用 Intelligent Guess 来了解数据是什么。由于jQuery已正确猜测它是XML,因此它在内部执行$.parseXML()并将Object而不是String传递给success回调。

jQuery.ajax() docs

答案 1 :(得分:0)

$(document).ready(function () {
$.ajax({
    type: "GET",
    url: "/services/LTLGadgetV2.aspx",
    dataType: "xml",
    success: xmlParser
   });
});

function xmlParser(xml) {
    console.log($(xml).find('PricingModel'))
}

工作示例:http://jsbin.com/famemidoli/1/edit?js,console,output