0

jQuery $ .ajax呼び出しを使用して、Webサービスからxmlを返そうとしています。このWebサービスの呼び出しが失敗した場合、何らかの理由で、使用したい静的xmlがあります。呼び出しが失敗したかどうかを通知するためにtimeoutプロパティを使用しようとしており、エラー関数にxml解析ロジックを配置しています。ajax呼び出しを削除してテストしたので、xmlの解析が正常に機能することはわかっています。ダミーのURLを使用してajax呼び出しを追加してエラーを強制すると、$xml変数が設定されません。何かご意見は?

var navXml = '<?xml version="1.0" encoding="utf-8" ?><book><chapter id="1"></book>'; //static xml here
var serviceUrl = 'http://1234lkjasdf/test'; //bad service url to test failure
var $xml;

$.ajax({
type: 'GET',
dataType: 'xml',
url: serviceUrl,
timeout: 10,
success: function(data, status){
    //set $xml var to xml data returned
    $xml = data;
},
error: function (req, status, error){
    //set $xml var to xml parsed from static value
    xmlDoc = $.parseXML( navXml ), 
        $xml = $( xmlDoc );
}
});
4

1 に答える 1

1

編集

$.ajax エラー ハンドラのエラーは、黙って失敗するようです。XML にエラーがあります。チャプター タグが閉じていません。次のようにする必要があります。

<chapter id="1" />

XML でエラーを修正すると、機能します。これはそのためのフィドルです:http://jsfiddle.net/Pzdv5/1/


エラー ハンドラは次のようにする必要があります。

//set $xml var to xml parsed from static value
var xmlDoc = $.parseXML( navXml ); 
$xml = $( xmlDoc );

(グローバル変数が作成されます) の前にvarがありません。さらに重要なことは、宣言xmlDocの後にセミコロン (;) ではなくコンマ (,) があることです。xmlDoc

于 2012-06-07T16:33:10.993 に答える