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 ответов:
ни один из ответов здесь мне помогли. Проблема была в следующем:я использовал тонкую сборку 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() ({ 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); });