如何处理jsonp错误?

时间:2012-03-02 14:24:11

标签: javascript jquery jsonp

我正在使用jquery.ajax()创建一个jsonp请求:

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

当没有问题时,请求的页面正常调用我的回调函数。

但是,在某些情况下,请求的页面不会返回任何内容。

如何处理此错误,因为它不会调用任何回调函数?

谢谢!

(抱歉我的英语不好)

4 个答案:

答案 0 :(得分:0)

你无法处理。必须使服务器始终返回一些JavaScript,在出现错误的情况下,可能会调用一些预先安排的错误处理函数,或任何看似合适的函数。

答案 1 :(得分:0)

如果您请求的页面没有返回任何内容,那么您需要将其包装在某些代码中,以便在某些JSON中返回错误代码。因此,您可以使用具有超时的内容来装饰请求服务,然后返回一些可能是:

的json
{
   errorCode: "requestTimeout"
}

答案 2 :(得分:0)

您可以在$ .ajax()调用上设置超时,并通过该机制处理缺少响应。

$.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);
      }
  }
});​

答案 3 :(得分: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);
            }
           }
       }
    });
}

由于