0

URLで与えられたデータが存在しない場合にエラーを表示したい。次のコードで試しましたが、うまくいきません。

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

4

2 に答える 2

1

エラーコールバックのjQueryAjaxドキュメントから:

注:このハンドラーは、クロスドメインスクリプトおよびJSONPリクエストでは呼び出されません。

jQueryのネイティブメソッドを使用してJSONPリクエストでエラーをキャッチすることはできません。

jQuery-JSONPは、 Opera以外のすべてのブラウザでエラー処理を有効にしているようです。問題が発生した場合は、プロジェクトのGitHubページで問題を開くことをお勧めします。

于 2012-09-18T18:07:19.033 に答える
0

この問題を処理する方法は、成功フィールドを JSONP 応答に追加することです。このようにしてみてください:

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

あなたのメッセージを処理する必要があります。

2 番目の方法は、成功イベントを処理し、応答が 200 (成功) か、たとえば 404 (URL が存在しない) かを確認することです。

success(data, textStatus, jqXHR)

うまくいかない場合は、次のページを試してみてください: jQuery Ajax。ここでも、関心のあるパラメーターは textStatus です。

別の可能性は、ajax 呼び出しにタイムアウトを設定することです: timeout : 5000,. その後、エラーを処理する必要があります。もちろん、タイムアウトが発生する理由は推測することしかできません。

于 2012-09-19T10:53:44.463 に答える