向函数添加回调(e)未捕获的TypeError:回调不是函数

时间:2019-05-28 17:08:53

标签: jquery

我有一个似乎无法向其中添加回调的函数。

function ajaxCartFormSubmitted(e) {
  someotherfunctionsinside();
  if (e)...
});

function test () {
    console.log('abraka');

}

我尝试做

function ajaxCartFormSubmitted(e, callback) {
  someotherfunctionsinside();
  if (e)...
  if (callback) {
    callback();
  }
});

然后致电

ajaxCartFormSubmitted(test);

但是我得到了Uncaught TypeError:回调不是函数。问题是什么?我使用的是jQuery 1.3,无法升级。谢谢。

2 个答案:

答案 0 :(得分:1)

  

但是我得到了Uncaught TypeError:回调不是函数。有什么问题吗?

问题是您没有传递ajaxCartFormSubmitted两个参数,而只传递了一个,它作为参数e(第一个参数)接收。执行此操作时,callback参数将为undefined

要么为它传递两个参数,要么更改函数,使其仅期望一个参数。

函数期望什么:

function ajaxCartFormSubmitted(e, callback) {
//           First parameter --^  ^^^^^^^^--- second parameter

您要发送的内容:

ajaxCartFormSubmitted(test);
//                    ^^^^------ First (only) argument

答案 1 :(得分:0)

您有两个问题。

1

有两个参数ecallback。如果要进行回调,则必须将它们都传递给它们,因为这是第二个参数。

像这样:ajaxCartFormSubmitted(event, test)

您不能只传递第二个参数而跳过第一个参数。如果需要执行此操作,请编写其他函数。

2

如果将其称为ajaxCartFormSubmitted(event, 'foo')ajaxCartFormSubmitted(event, true),则'foo'true都不是函数。您只需要在运行它之前检查callback的类型实际上是一个函数即可

function ajaxCartFormSubmitted(e, callback) {
  someotherfunctionsinside();
  if (e) {
    ...
  }
  if (callback && typeof callback === 'function') {
    callback();
  }
});

如果仍然无法正常工作,请在其中添加console.log,以便对其进行调试并查看其含义。

console.log(typeof callback, callback)