我有一个似乎无法向其中添加回调的函数。
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,无法升级。谢谢。
答案 0 :(得分:1)
但是我得到了Uncaught TypeError:回调不是函数。有什么问题吗?
问题是您没有传递ajaxCartFormSubmitted
两个参数,而只传递了一个,它作为参数e
(第一个参数)接收。执行此操作时,callback
参数将为undefined
。
要么为它传递两个参数,要么更改函数,使其仅期望一个参数。
函数期望什么:
function ajaxCartFormSubmitted(e, callback) {
// First parameter --^ ^^^^^^^^--- second parameter
您要发送的内容:
ajaxCartFormSubmitted(test);
// ^^^^------ First (only) argument
答案 1 :(得分:0)
您有两个问题。
有两个参数e
和callback
。如果要进行回调,则必须将它们都传递给它们,因为这是第二个参数。
像这样:ajaxCartFormSubmitted(event, test)
您不能只传递第二个参数而跳过第一个参数。如果需要执行此操作,请编写其他函数。
如果将其称为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)