Добавить обратный вызов в функцию (e) Uncaught TypeError: обратный вызов не является функцией

У меня есть функция, в которую я не могу добавить обратный вызов.

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

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

}

я стараюсь делать

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

а потом звоню

ajaxCartFormSubmitted(test);

Но я получаю Uncaught TypeError: обратный вызов не является функцией. В чем проблема? Я использую jquery 1.3 и не могу обновиться. Спасибо.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
568
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

But I get Uncaught TypeError: callback is not a function. What is the problem?

Проблема в том, что вы не передали ajaxCartFormSubmitted два аргумента, вы передали только один, который он получает как параметр e (первый параметр). Когда вы это сделаете, параметр callback будет undefined.

Либо передайте ей два аргумента, либо измените функцию, чтобы она ожидала только один.

Что ожидает функция:

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

Что вы отправляете:

ajaxCartFormSubmitted(test);
//                    ^^^^------ First (only) argument
Ответ принят как подходящий

У вас есть две проблемы.

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.info, чтобы вы могли отладить его и посмотреть, что это такое.

console.info(typeof callback, callback)

Спасибо за ответ. Я получаю undefined undefined в консоли. И проверка работоспособности не сработала. Однако ошибок нет. (e), вероятно, является событием - как я могу передать его в качестве первого аргумента?

user1031742 28.05.2019 19:28
как я могу передать [(e)] в качестве первого аргумента? - ajaxCartFormSubmitted(e, test);
freedomn-m 28.05.2019 19:39

Просто передайте что-нибудь туда. если вы сделали функцию, вы должны знать, что там происходит. кажется, у него есть проверка на if (e) { ..., поэтому, если вы хотите пропустить его, просто передайте undefined вот так: ajaxCartFormSubmitted(undefined, test)

FiniteLooper 28.05.2019 20:03

Другие вопросы по теме