Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 带回调的ajax成功函数_Jquery - Fatal编程技术网

Jquery 带回调的ajax成功函数

Jquery 带回调的ajax成功函数,jquery,Jquery,我需要向$.ajax()成功回调函数添加回调。我在jQuery1.3中工作 success : ajaxCartFormSubmitted(), function ajaxCartFormSubmitted(e) { longRunningOperation(); if (e)... }); 我应该在ajaxCartFormSubmitted()之后运行的函数是: function modalopen () { if ($('#ajax-cart-popup .full').le

我需要向
$.ajax()
成功回调函数添加回调。我在jQuery1.3中工作

success : ajaxCartFormSubmitted(),

function ajaxCartFormSubmitted(e) {
  longRunningOperation();
  if (e)...
});
我应该在
ajaxCartFormSubmitted()
之后运行的函数是:

function modalopen () {
  if ($('#ajax-cart-popup .full').length) {
    openmodal('ajax-cart-popup');
  } else {
    return false;
  }
};
我试图像这样将回调添加到
ajaxCartFormSubmitted(e)
ajaxCartFormSubmitted(e,callback)
并像这样使用它
success:ajaxCartFormSubmitted('modalopen()'),
但是我没有得到任何结果,似乎函数没有启动。第一个
e
参数中有问题吗?多谢各位


更新:我需要在ajaxCartFormSubmitted函数之后启动modalopen函数。理想情况下,在成功回调中。

这里有一些问题。首先,您需要将函数引用传递给
success
。通过立即调用函数,实际上是将其返回值赋给
success
,因此似乎什么也没有发生。要解决此问题,只需从函数名中删除括号:

success: ajaxCartFormSubmitted,
接下来,要在
ajaxCartFormSubmitted()
之后执行
modalopen()
,您需要在此时调用它。仅将函数名作为参数传递是不够的。您需要明确地调用该函数。您可以在
ajaxCartFormSubmitted()
中执行此操作:

或者,您可以为
success
提供一个匿名函数,该函数调用两个函数:

success: function() {
  ajaxCartFormSubmitted();
  modalopen();
},
最后,有几条注释。您需要更新jQuery,因为1.3已经过时10年了。3.4是最新版本。我也会小心你的函数名。您似乎同时拥有
openmodal()
modalopen()
,这种相似性只会带来问题

编辑


ajaxCartFormSubmitted函数包含另一个需要一些时间处理的函数。这就是为什么我需要在ajaxCartFormSubmitted之后调用我的函数


在这种情况下,您需要自己实现回调模式,就像
$.ajax()
所做的那样。您可以使
ajaxCartFormSubmitted()
接受函数作为参数,该参数将在异步操作完成后执行,如下所示:

// in $.ajax settings:
success: function() {
  ajaxCartFormSubmitted(openmodal);
}

// function definition:
function ajaxCartFormSubmitted(cb) {
  some.longRunningOperation({
    oncomplete: function() {
      cb && cb(); // invoke the function you passed in here, openmodal() in this case
    }
  });
}

请注意,您需要传递函数引用,即,
success:ajaxCartFormSubmitted,
。其次,请注意jQuery1.3已经过时10年了。您需要更新它success函数的参数是预定义的,请检查是否还可以
返回$.ajax(…
并使用
.done()
ajaxCartFormSubmitted函数包含另一个需要一些时间处理的函数。这就是为什么我需要在ajaxCartFormSubmitted之后调用我的函数。在这种情况下,您需要自己实现回调模式。我已经更新了答案,让您大致了解一个问题:我为什么不使用回调ajaxCartFormSubmitted(e,callback)是这样的吗?好的,那么(cb)是指callback吗?这个函数最初是这样编写的,ajaxCartFormSubmitted(e)我应该删除(e)吗?这完全取决于您希望
e
具有的值。关于我编写的代码,我刚刚将参数命名为
cb
,缩写为“callback”。它可以命名为任何有效的JS标识符
// in $.ajax settings:
success: function() {
  ajaxCartFormSubmitted(openmodal);
}

// function definition:
function ajaxCartFormSubmitted(cb) {
  some.longRunningOperation({
    oncomplete: function() {
      cb && cb(); // invoke the function you passed in here, openmodal() in this case
    }
  });
}