0

$.ajaxデータベースからデータを JSON オブジェクトとして返すために使用しています。フィールドの 1 つは有効な XML です (SQL Server の XML フィールドに格納されています)。XML データの抽出に使用$.parseXMLすると、IE (バージョン 9) では問題なく動作しますが、Firefox や Chrome ではうまくいきません。

Google 検索に基づいて contentType の XML データを text/XML として返すだけで、2 つの個別のクエリを実行する必要があるかもしれないと考えています。現在、$.ajax.ashx ハンドラー ファイルの contentType と同様に、returnType は JSON です (そうです、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 では機能しません。

controlId = Questions[x].childNodes[t].childNodes[g].text; // これでもない --> Questions[x].childNodes[t].childNodes[g].nodeTypedValue

4

1 に答える 1

2

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/

于 2013-10-11T19:49:10.090 に答える