У меня есть функция, в которую я не могу добавить обратный вызов.
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 ответа
У вас две проблемы.
1
Есть два аргумента e
и callback
. Вы должны передать их оба, если хотите обратный вызов, так как это ваш второй аргумент.
Вот так: 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)
Но я получаю Uncaught TypeError: обратный вызов не является функцией. В чем проблема?
Проблема в том, что вы не передали ajaxCartFormSubmitted
два аргумента, вы передали только один, который он получает как параметр e
(первый параметр). Параметр callback
будет undefined
, когда вы это сделаете.
Либо передайте ему два аргумента, либо измените функцию, чтобы она ожидала только одного.
Что ожидает функция:
function ajaxCartFormSubmitted(e, callback) {
// First parameter --^ ^^^^^^^^--- second parameter
Что вы отправляете это:
ajaxCartFormSubmitted(test);
// ^^^^------ First (only) argument
Похожие вопросы
Новые вопросы
jquery
jQuery - это библиотека JavaScript, рассмотрите возможность добавления тега JavaScript. jQuery - это популярная кросс-браузерная библиотека JavaScript, которая облегчает прохождение Document Object Model (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться в рассматриваемом коде, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.