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!");
});
Тем не менее, мой успешный обратный вызов не запускается (так как "success!" не зарегистрирован в консоли), и в консоли появляется ошибка:
TypeError: $.ajax(...) is not a function.
success: callback
Что это значит? Ранее я выполнял запросы AJAX, когда событие успеха вызывает анонимную функцию внутри $.ajax, но сейчас я пытаюсь запустить отдельную именованную функцию (в данном случае, обратный вызов). Как мне это сделать?
Ответы
Ответ 1
Ни один из ответов здесь не помог мне. Проблема была в том, что я использовал тонкую сборку jQuery, которая удалила некоторые вещи, ajax был одним из них.
Решение. Просто скачайте обычную (сжатую или не) версию jQuery здесь и включите ее в свой проект.
Ответ 2
Дважды проверьте, используете ли вы полную версию jquery, а не какую-то тонкую версию.
Я использовал ссылку jQuery cdn-script, которая поставляется с jquery. Проблема заключается в том, что по умолчанию это slim.jquery.js, который не имеет в нем функции ajax
. Итак, если вы используете (скопированный с сайта Bootstrap) тонкую версию 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"
Ответ 3
Не уверен, но похоже, что у вас есть синтаксическая ошибка в коде. Пытаться:
$.ajax({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
У вас были дополнительные скобки рядом с $.ajax
которые не нужны. Если вы все еще получаете ошибку, тогда файл сценария jQuery не загружается.
Ответ 4
Оформить заказ Документация JQuery
Уведомление об изъятии: обратные вызовы jqXHR.success(), jqXHR.error() и jqXHR.complete() удаляются с jQuery 3.0. Вместо этого вы можете использовать jqXHR.done(), jqXHR.fail() и jqXHR.always().
Ответ 5
У вас есть ошибка в вашей функции AJAX, слишком много скобок, вместо этого вместо $.ajax({
Ответ 6
Существует синтаксическая ошибка, так как вы разместили скобки после функции ajax и еще один набор скобок для определения списка аргументов:
Как вы написали: -
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
Скобка вокруг ajax должна быть удалена, она должна быть: -
$.ajax({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
Ответ 7
Ссылка на минимальную версию jquery, включающую ajax:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
Ответ 8
Я столкнулся с тем же вопросом, и моим решением было: добавить сценарий JQuery.
В частности, мы должны убедиться, что соответствующий JQuery загружен, когда мы отлаживаем наши js под firefox/chrome.
Ответ 9
Для тех, кто пытается запустить это в 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);
});
(кредиты: fooobar.com/questions/14878/...)
Ответ 10
Если вы используете загрузочный HTML-шаблон, не забудьте удалить ссылку на jquery slim в нижней части шаблона. Я публикую эту деталь здесь, так как пока не могу комментировать ответы..