22

jQuerygetJSON()関数を使用しています。この関数は問題なくデータを取得します。しかし、時々待っている、待っている...そして、ページの中央にロード中のロードインを示すロードバー。したがって、jQueryajax()関数にはタイムアウト変数があります。しかし、私はgetJSON機能を使いたいです。そして機能も使えるajaxStart()と思いajaxStop()ます。しかし、どのように?

$('.loadingDiv')
    .hide()
    .ajaxStart(function() {
        $(this).fadeIn();
        setTimeout("throw '';",15000) //i used this but didn't work
        setTimeout("return;",15000) //i used this but didn't work
        setTimeout("abort();",15000) //i used this but didn't work.(Abort all ajax events)
    })
    .ajaxStop(function() {
        $(this).fadeOut();
    });
4

6 に答える 6

12

致命的なギターが言及したようgetJSON()に、 function は$.ajax(). 実際のエラーではなく、タイムアウトが発生したかどうかを検出したい場合は、以下のコードを使用してください。

var request = $.ajax({
    dataType: "json",
    url: url,
    data: data,
    success: function( ) { },
    timeout: 2000
}).fail( function( xhr, status ) {
    if( status == "timeout" ) {
        // do stuff in case of timeout
    }
});
于 2013-01-09T15:40:38.220 に答える
1

setTimeout 関数は、グローバル スコープで指定されたミリ秒数の後に一連のコードを実行します。

getJSON 関数 (ここの jQuery ドキュメントによるhttp://api.jquery.com/jQuery.getJSON/ ) は、次の省略形です。

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

したがって、次のように呼び出したいと思うでしょう:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success,
  timeout: 15000
});

$('.loadingDiv')
    .hide()
    .ajaxStart(function() {
        $(this).fadeIn();
    })
    .ajaxStop(function() {
        $(this).fadeOut();
    });
于 2013-01-09T15:33:39.127 に答える