it-swarm.com.ru

Ошибка типа: $ .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!");
});

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

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

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

132
ReactingToAngularVues

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

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

639
Gus

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

Я использовал ссылку jquery cdn-script, которая поставляется с jquery. Проблема в том, что по умолчанию это slim.jquery.js, в котором нет функции ajax. Так что, если вы используете (скопированную с веб-сайта Bootstrap) уменьшенную версию скрипта jquery, используйте вместо нее полную версию.

То есть используйте <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"

102
karthiks

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

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

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

26
Jason Evans

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

Уведомление об устаревании : обратные вызовы jqXHR.success (), jqXHR.error () и jqXHR.complete () удалены с jQuery 3.0. Вместо этого вы можете использовать jqXHR.done (), jqXHR.fail () и jqXHR.always ().

11
Mahbub

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

4
netvision73

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

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

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

Скобка вокруг ajax должна быть удалена, она должна быть: -

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

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

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

2
Jianeng Xu

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

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

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

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

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

1
bersling