2012-03-02 5 views
1

私はこのような)jquery.ajaxとJSONPリクエストを(作ってるんだ:そこ大丈夫、要求されたページは、通常、私のコールバック関数を呼び出すときjsonpエラーを処理するには?

var cep = 99999999; 
$.ajax({ 
    url: "http://cep.paicon.com.br/jsonp/"+ cep +"?callback=addressFunction", 
    dataType: 'jsonp', 
    crossDomain: true, 
    jsonp: false 
}) 

しかし、状況によっては、要求されたページから何も返されません。

コールバック関数を呼び出さないため、このエラーを処理するにはどうすればよいですか?

ありがとうございます!

(私の貧しい人々のために申し訳ありません)

答えて

0

あなたは$アヤックス()の呼び出しにタイムアウトを設定し、応答の欠如を扱うことができますそのメカニズムを介して。

$.ajax({ 
    url: "http://cep.paicon.com.br/jsonp/"+ cep +"?callback=addressFunction", 
    type: "GET", 
    dataType: "jsonp", 
    timeout: 2000, 
    success: function(response) { alert(response); }, 
    error: function(x, t, m) { 
     if(t==="timeout") { 
      alert("got timeout"); 
     } else { 
      alert(t); 
     } 
    } 
});​ 
+0

問題は、サーバーからの空の応答が有効な「

0

あなたはそれを処理できません。エラーが発生した場合には、あらかじめ配置されたエラーハンドラ関数を呼び出す何か、または適切と思われるものがあれば、サーバーは常にJavaScriptを返すようにする必要があります。

+0

はすでにそれを疑いました。サーバーが何も返さない場合は 私は対処できません。 – matheusvmbruno

0

リクエストされたページが何も返されない場合、いくつかのJSONでエラーコードを返すように、コードでラップする必要があります。だから、あなたはタイムアウトを持っているし、その後かもしれないいくつかのJSONを返す何かを要求サービスを飾ることができます:

{ 
    errorCode: "requestTimeout" 
} 
0

$ .ajaxエラー設定でtextStatus == "parsererror"エラーを処理しました。

今私の機能は、そのようなものです:

function buscaEndereco(cep){ 
    url = "http://cep.paicon.com.br/jsonp/"+ cep; 
    $.ajax({ 
     url: url, 
     type: "GET", 
     dataType: 'jsonp', 
     crossDomain: true, 
     timeout: 10000, 
     success: function(response){ 
      montaEndereco(response); 
     }, 
     error: function(x, t, m){ 
      if(t == "timeout"){ 
      alert("Timeout"); 
      } else { 
      if(t == "parsererror"){ 
       alert("CEP not found"); 
      } else { 
       alert(t); 
      } 
      } 
     } 
    }); 
} 

おかげ