TypeError:$.ajax (...) не является функцией?


Я пытаюсь создать простой запрос AJAX, который возвращает некоторые данные из базы данных MySQL. Вот моя функция ниже:

function AJAXrequest(url, postedData, callback) {
    $.ajax() ({
        type: 'POST',
        url: url,
        data: postedData,
        dataType: 'json',
        success: callback
    });
}

...и вот где я его называю, разбирая по нужным параметрам:

AJAXrequest('voting.ajax.php', imageData, function(data) {
    console.log("success!");
});

тем не менее, мой успех обратного вызова не выполняется (как "успех!"не вошел в консоль), и я получаю сообщение об ошибке в моей консоли:

TypeError: $.ajax(...) is not a function.
success: callback

что это значит? Я делал запросы AJAX раньше, когда событие успеха запускает анонимный функция внутри $.ajax, но теперь я пытаюсь запустить отдельную именованную функцию (в данном случае обратный вызов). Как мне это сделать?

8 65

8 ответов:

ни один из ответов здесь мне помогли. Проблема была в следующем:я использовал тонкую сборку jQuery, который имел некоторые вещи удалены, ajax является одним из них.

решение: просто загрузите обычную (сжатую или нет) версию jQuery здесь и включить его в ваш проект.

дважды проверьте, используете ли вы полную версию jquery, а не какую-то тонкую версию.

я использовал ссылку jQuery cdn-script, которая поставляется с jquery. Проблема в том, что этот по умолчанию тонкий.jquery.js, который не имеет в нем. Итак, если вы используете (копируете вставленный с сайта Bootstrap) slim version jQuery script link, используйте вместо этого полную версию.

то есть использовать <script src="https://code.jquery.com/jquery-3.1.1.min.js"> вместо <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"

Не уверен, но похоже, что у вас есть синтаксическая ошибка в коде. Попробуйте:

$.ajax({
  type: 'POST',
  url: url,
  data: postedData,
  dataType: 'json',
  success: callback
});

у вас были дополнительные скобки рядом с $.ajax которые были не нужны. Если вы все еще получаете сообщение об ошибке, то файл сценария jQuery не загружается.

Оформить Заказ Документация Jquery

Уведомление Об Устаревании: jqXHR.успех(), jqXHR.ошибка(), и jqXHR.полные () обратные вызовы удаляются с jQuery 3.0. Вы можете использовать jqXHR.сделать(), jqXHR.fail (), и jqXHR.всегда() вместо этого.

у вас есть ошибка в вашей функции AJAX, слишком много скобок, попробуйте вместо этого $.ajax({

существует синтаксическая ошибка, поскольку вы разместили скобки после функции ajax и другой набор скобок для определения списка аргументов: -

Как вы написали:-

$.ajax() ({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

скобки вокруг ajax должны быть удалены это должно быть: -

$.ajax({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

Я столкнулся с тем же вопросом, и мое решение было: добавить скрипт JQuery.

особенно, мы должны убедиться, что соответствующий JQuery загружен, когда мы отлаживаем наш js под firefox/chrome.

для тех, кто пытается работать в этой nodejs: это не будет работать из коробки, так как jquery нужен браузер (или аналогичный)! Я просто пытался запустить импорт и регистрировал console.log($) который писал [Function] а затем и console.log($.ajax), который возвращен undefined. У меня не было tsc ошибки и автозаполнение от intellij, поэтому мне было интересно, что происходит.

потом в какой-то момент я понял, что node может быть проблема, а не машинопись. Я попробовал тот же код в браузере так и получилось. Чтобы заставить его работать, вам нужно запустить:

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    var $ = require("jquery")(window);
});

(кредиты:https://stackoverflow.com/a/4129032/3022127)