2011-12-18 11 views
3

xhrメソッドのエラーはどのような条件で呼び出されますか?応答が200であっても、エラーのあるコードが呼び出されます。私はxhrPostメソッドを使用しています。ajaxメソッドのDojoエラー処理

更新:

dojo.xhrPost({ 
url: url, 
handleAs: respType /* json */, 
content: data, 
load: onServerResponse, 
error: onHttpError 
}) 
function onServerResponse(response, ioArgs) { 
    if(onResponse !== null) { 
     onResponse(response); 
    } 
} 
function onHttpError(error, ioArgs) { 
    if (showHttpError === true) { 
     var errMsg = ""; 
     switch (ioArgs.xhr.status) { 
      case 0: errMsg = "Please check Web Server status."; break; 
      case 404: errMsg = "HTTP (404): Requested Page Not Found"; break; 
      case 500: errMsg = "HTTP (500): The server reported an Error"; break; 
      default: errMsg = "Unhandled HTTP error - " + ioArgs.xhr.status; 
     } 
     ConsoleUtils.showNotificationAlertDialog(errMsg, ConsoleConstants.INFORMATION); 
    } 
} 

これらはFirebugのからのレスポンスヘッダです:

サーバーのApache-コヨーテ/ 1.1 のContent-Typeがapplication/jsonの;のcharset = UTF-8 転送符号化チャンク 日曜日2011年12月18日18:06:54 GMT

レスポンスボディ {「メッセージ」:「キオスクが正常に削除さ」、「成功」:真} 200の戻り状態にもかかわらず

は、警告ダイアログが呼び出されます。

+0

[AJAXリクエストのエラーと考えられるもの(Dojoの場合)](http://stackoverflow.com/questions/5721949/what-is-considered-and-ajax-request-error-in-dojo ) – hugomg

+0

情報ありがとうございます。私は、コードスニペットと火かき棒の内容で私の質問を更新しました。 –

+0

あなたはonResponseメソッドを投稿できますか? – Philippe

答えて

0

onServerResponse関数では、onResponseという名前のvarを使用します。 あなたがしているから:onResponse()私は推測することができますonResponseは関数です。 あなたのテストif(onResponse!== null)が適切でないように見えるかもしれません。

あなたは、関数のexistanceをテストしたい場合、あなたがtypeof演算onResponse ==「機能」をチェックしたい場合があります

はまた、あなたがそこで関数を呼び出しているsicne、関数は右の範囲内であることを確認してください。 .. 次に、load:dojo.hitch(theScopeWhereOnResponseFunctionExists、onServerResponse)を使いたいかもしれません。

これは役に立ちます。

0

私はちょうどこの問題としばらく戦って説明を見つけました。

xhrgetが200を返しても、load関数が未処理の例外をスローすると、dojoはこれをエラーとして扱い、エラー関数を呼び出します。