在模拟$.ajax时,Jquery $.post中的超时问题

3
我们如何使用$.post来模拟$.ajax的超时呢?请注意保留原有的HTML标签。

$.post归根结底就是$.ajax,所以它们是相同的吗?但是,$.post没有允许超时参数的重载,因此您需要使用$.ajax——可能可以在$.ajaxSetup中设置此设置?- http://api.jquery.com/jQuery.ajaxSetup/ - SpaceBison
为什么需要使用$.post而不是$.ajax?如果必须使用$.ajax,则可以使用$.ajaxSetup({'timeout': ...})为所有请求设置全局超时。 - pjumble
1个回答

5

$.POST$.ajax 的预设版本,因此已经设置了一些参数。

As a matter of fact, a $.post is equal to

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

不过,你可以创建自己的后置函数以便最终通过$.ajax发送请求。

以下是我刚编写的自定义POST插件。

(function( $ ){
  $.myPOST = function( url, data, success, timeout ) {      
    var settings = {
      type : "POST", //predefine request type to POST
      'url'  : url,
      'data' : data,
      'success' : success,
      'timeout' : timeout
    };
    $.ajax(settings)
  };
})( jQuery );

现在自定义POST函数已经准备好了。
使用方法:
$.myPOST(
    "test.php", 
    { 
      'data' : 'value'
    }, 
    function(data) { },
    5000 // this is the timeout   
);

享受 :)


这样做不会导致脚本被多次调用并且每次调用都生成一个新的数据集吗? - Anriëtte Myburgh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接