2012-09-18 33 views
0

我想在由URL給出的數據不存在時顯示錯誤。我已經嘗試了下面的代碼,但它不起作用。如何使用JSONP捕獲錯誤(如果webservice返回空結果)

function getNum() { 
    var num = document.getElementById('number').value; 
    //alert(number); 
    $('#shownum').empty(); 
    $(document).ready(function() { 
     $.jsonp({ 
      url : 'http://localhost/json/num.php?&idnum='+num, 
      callbackParameter : 'callback', 
      success : function(data, status) { 
       $.each(data, function(i, item) { 
        var a = ""; 
        var name = item.name; 
        var dob = item.dob; 
        var addr = item.addr; 
        b +='<br>' + name + '<br>'; 
        b +=dob + '<br>'; 
        b +=addr + '<br>'; 

        $('#shownum').append(b); 
       }); 
      }, 
      error : function() { 
       $('#shownum').append('data not found'); 
      } 
     }); 
    }); 
} 

例如,如果URL回報?(null);,我怎麼追加錯誤通知#shownum id

+1

'$ .jsonp'從哪裏來?而且,它爲什麼需要? –

+0

我使用jquery-jsonp – user1681079

回答

1

從jQuery的Ajax文檔錯誤回調:

注:該處理器沒有要求跨域腳本和JSONP請求。

使用jQuery本地方法,您無法捕獲JSONP請求的錯誤。

jQuery-JSONP似乎可以啓用除Opera以外的所有瀏覽器的錯誤處理。如果您遇到問題,我會建議在該項目的GitHub頁面上打開一個問題。

+0

我的意思是如果給定的url返回錯誤?(null);結果,我如何向#shownum添加錯誤消息 – user1681079

+0

我不明白。 'console.log(arguments)'在你的錯誤處理程序中,結果是什麼? –

0

我處理這個問題的方法是將成功字段添加到JSONP響應中。嘗試像這樣:

{"success":false,"response":"data or objects"} 

您應該處理您的消息。

第二種方法是處理成功事件並檢查響應是否爲200(即成功)或例如404(url不存在)。

success(data, textStatus, jqXHR) 

在成功的問題時,試試這個頁面:jQuery Ajax。同樣,你感興趣的參數是textStatus。

另一種可能是您的ajax調用超時:timeout : 5000,。之後,你應該處理錯誤。當然,你只能猜測爲什麼會發生超時。