我希望在加载数据2秒后设置超时。我是ajax的新手,所以请通过我的代码澄清...因为我已经看到很多(在ajax上设定时间)答案,但每个人都通过$ .ajax()来做。
我如何通过.load()完成?有可能吗?
我的AJAX代码1:
// Start of our new ajax code
if (!url) {
url = jQuery('#product_addtocart_form').attr('action');
}
url = url.replace("checkout/cart","ajax/index"); // New Code
var data = jQuery('#product_addtocart_form').serialize();
data += '&isAjax=1';
jQuery('#ajax_loader').show();
try {
jQuery.ajax( {
url : url,
dataType : 'json',
type : 'post',
data : data,
success : function(data) {
jQuery('#ajax_loader').hide();
parent.setAjaxData(data,true);
}
});
jQuery("#productOptions").modal('hide');
} catch (e) {
//alert(e);
}
// End of our new ajax code
2:
// AJAX product options modal
$('.optionsTrigger').on('click', function() {
var target, url;
target = $(this).attr('data-target');
url = $(this).attr('href');
$(target).load(url, function(){
$(target).modal({
show: true
});
});
});
$('#productOptions').on('hidden', function() {
$('#productOptions').html('<img src="<?php echo $this->getSkinUrl("img/loading.gif"); ?>" id="optionsLoading" />');
window.setTimeout("Tick()", 2000);
function Tick()
{
}
});
答案 0 :(得分:2)
jQuery有ajaxSetup()
method可用。您可以将所有选项设置为常规ajax()
方法,包括timeout
选项。当您通过load()
调用AJAX请求时,也可以使用设置的设置。
答案 1 :(得分:1)
首先,围绕Ajax 异步(如setTimeout
)这一事实进行了解决 - 将来会调用回调函数。
如何超时?你可以用
var request = jQuery.ajax(…);
setTimeout(function() {
request.abort();
}, 2000);
request.done(function callback(){ … });
但它比这简单得多,jQuery已经为ajax()
option object提供了timeout
参数。
但是,这不可能使用load
- 这里不返回jqXHR对象,而是返回当前的jQuery DOM选择。或者,您必须globally configure ajax,或者您不使用load
并自行构建方法 - 这并不难,请参阅source