我有个很奇怪的问题:我有产品列表,当你点击产品编辑产品,你去产品的形式。在这个产品的形式,我有AJAX发送请求到getFiltersGroup
。我想重新发送这个AJAX的错误,但由于某种原因,错误的AJAX是开始发送产品的形式,而不是getFiltersGroup
的URL请求。
有什么想法是错的,为什么不发送请求到getFiltersGroup
?
这是重试时发生的情况:
这是密码:
var retry;
$('#filters-ajax').on('click', function(){
var product_id = "<?php echo isset($set_id) ? $set_id : NULL; ?>";
var ajaxConfig = $.ajax({
url: "index.php?route=catalog/product/getFiltersGroup&token=<?php echo $token ?>",
type: "POST",
data: '&product_id='+product_id,
dataType: 'json',
beforeSend: function(){
$('#btn-product-filter-groups').prop('disabled', true);
},
success: function(data){
clearInterval(retry);
$('#btn-product-filter-groups').prop('disabled', false);
},
error: function(xmlhttprequest, textstatus, message) {
retry = setInterval(function(){
$.ajax(ajaxConfig);
}, 6000)
}
});
})
- 更新**
我修复了网址请求,但现在我不能重置setInverval()
。而且我从来没有得到警报消息。任何想法是什么错了?
var retry;
$('#filters-ajax').on('click', function(){
var product_id = "<?php echo isset($set_id) ? $set_id : NULL; ?>";
$.ajaxSetup({
url: "index.php?route=catalog/product/getFiltersGroup&token=<?php echo $token ?>",
type: "POST",
data: '&product_id='+product_id,
dataType: 'json'
});
var ajaxConfig = $.ajax({
beforeSend: function(){
$('#btn-product-filter-groups').prop('disabled', true);
},
success: function(data){
alert('WTF')
clearInterval(retry);
$('#btn-product-filter-groups').prop('disabled', false);
},
error: function(xmlhttprequest, textstatus, message) {
retry = setInterval(function(){
$.ajax(ajaxConfig);
}, 6000)
}
});
})
2条答案
按热度按时间drnojrws1#
$.ajax()
返回一个jqXHR对象,稍后您将把它作为新调用的配置对象传递给$.ajax()
:但是jqXHR对象不是
$.ajax()
配置对象,它没有url: ...
键/值对(也没有任何其他设置)。查看$.ajax()
配置对象的文档,它说:jQuery. AJAX ([设置])设置类型:PlainObject配置 AJAX 请求的一组键/值对。所有设置都是可选的。
关于
url
设置:url(默认值:当前页面)
由于config对象中没有指定URL,因此默认为当前页面。新的
$.ajax()
请求将请求当前页面,即编辑页面。如果你想让你的 AJAX 调用一个可调用的函数,只要把它放在一个函数中并调用它:
这种方法对我来说发出了各种各样的递归警钟,虽然,我会考虑尝试另一种方法。
iaqfqrcu2#
我不知道为什么,但这一个是工作的,如果有人能解释为什么这个代码是工作和以前的代码是不工作的,我会接受他的答案