getJSON超时处理

2021/01/30 05:31 · jquery ·  · 0评论

我正在使用jQuerygetJSON()函数。此功能获取数据没有问题。但是有时正在等待,等待等待...而我的加载栏在页面中心显示加载中loadin。因此,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();
    });

getJSON()返回一个可以调用该abort函数的promise

var p = $.getJSON(..., function(){ alert('success');});
setTimeout(function(){ p.abort(); }, 2000);

编辑:但是,如果您的目标是中途花费太多时间,那么致命吉他的答案会更好。

getJSON() 只是以下各项的简写:

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

因此,您可以根据需要使用$.ajax()和指定timeout选项。另请参阅:http : //api.jquery.com/jQuery.getJSON/

正如致命吉他所提到的,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
    }
});

总是有核路线:

//Set AJAX timeout to 10 seconds
$.ajaxSetup({
  timeout: 10*1000
});

这将使您的程序发出的所有AJAX请求(甚至通过$ .getJSON)都具有10秒以上的时间(或您拥有的时间)。

setTimeout函数在全局范围内指定数量的milisecons之后执行一组代码。

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();
    });

我认为这些答案都不理想。我知道这已经晚了几年,但是您要做的是.ajax();在接收JSONP响应时使用该方法的成功/错误回调选项

我将如何构造此示例:

    // Call
    $.ajax({

      // URL you want to get
      url: 'http://example.com/json?callback=?',

      // Set a realistic time in milliseconds
      timeout: 3000,

      // Put in success callback function here, this example
      // shows you the data you got back from the call
      success: function(data) {
        console.log(data);
      },

      // Put in an error handling function, just an alert in this case
      error: function(badData) {
        alert('The call was unsuccessful');
      },

      type: 'POST'
    });
本文地址:http://jquery.askforanswer.com/getjsonchaoshichuli.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!