2013-10-11 56 views
0

我正在使用$.ajax作为JSON对象从数据库返回数据。其中一个字段是有效的XML(已存储在SQL Server中的XML字段中)。当我使用$.parseXML来提取XML数据时,在IE(版本9)中一切都很好,但在Firefox或Chrome中没有任何好处。

我想我可能需要做2个单独的查询,其中一个只是基于Google搜索返回带有contentType的XML数据作为文本/ XML。目前$.ajax中的returnType是JSON,就像.ashx处理程序文件中的contentType一样(是的,它是一个ASP应用程序)。

有人可以提供一些见解吗?

由于提前, 大卫

样品:

function ParseXMLRecord(record) { 
    var xmlDoc = $.parseXML(record); 
    var $xml = $(xmlDoc); 
    var Questions = $xml.find("Question"); 
    for (var x = 0; x < Questions.length; x++) { 
     var test = Questions[x]; 
     for (var t = 0; t < Questions[x].childNodes.length; t++) {   
      if (Questions[x].childNodes[t].tagName == 'Response') { 
       var controlId = '', value = ''; 
       for (var g = 0; g < Questions[x].childNodes[t].childNodes.length; g++) { 

        var tagname = Questions[x].childNodes[t].childNodes[g].tagName; 

        if (tagname === 'Control') { 

fails on firefox --> controlId = Questions[x].childNodes[t].childNodes[g].text; 

          ... 

=========================== ================================================== =========

让我问这是一个不同的方式。这里是我需要解析XML:

<ResponseSet> 
    <Question> 
    <Text>Laterality</Text> 
    <Response> 
     <Control>rbLateralityLft</Control> 
     <Value>Left</Value> 
    </Response> 
    </Question> 

等等

基于上述,这条线在Firefox不起作用:

控件ID =问题[X] .childNodes [吨] .childNodes [G]的.text; //也不这一个 - >问题[X] .childNodes [T] .childNodes并[g] .nodeTypedValue

+0

请包括一些代码 –

+0

包括一些代码,重新产生问题(即一些xml和一个小例子)。在chrome和ff中说“不快乐”并不能告诉我们你得到了什么错误或者出了什么问题。 –

+0

错误显示controlId未定义。我认为这个问题不再是XML解析器,而是以我试图访问数据的方式。 – Shrink

回答

1

如果正在使用jquery来解析XML,然后使用jquery读取解析的数据也为例如:

var s = "<ResponseSet> <Question> <Text>Laterality</Text> <Response>  <Control>rbLateralityLft</Control>  <Value>Left</Value> </Response> </Question><Question> <Text>Laterality2</Text> <Response>  <Control>rbLateralityLft2</Control>  <Value>Left2</Value> </Response> </Question></ResponseSet>"; 

var x = $.parseXML(s); 
$.each($(x).children().children(), function (idx, data) { 
    var questionText = $(data).find("Text").text(); 
    var control = $(data).find("Control").text(); 
    var value = $(data).find("Value").text(); 
    console.log(questionText + " - " + control + " - " + value); 
}); 

http://jsfiddle.net/TNLer/

相关问题