Я пытаюсь создать простой запрос 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, но сейчас я пытаюсь запустить отдельную именованную функцию (в данном случае, обратный вызов). Как мне это сделать?
$.ajax
без arguments ($.ajax()
), а возвращаемое значение - объект jqXHR, который не является функцией. Следовательно$.ajax()(...)
выкинет ошибку.Ответы:
Ни один из ответов здесь не помог мне. Проблема была в том, что я использовал тонкую сборку jQuery , в которой были удалены некоторые вещи, ajax был одним из них.
Решение: просто скачайте обычную (сжатую или нет) версию jQuery здесь и включите ее в свой проект.
источник
$.ajax
убирается из "стройной" сборки?Дважды проверьте, используете ли вы полную версию 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"
источник
Не уверен, но похоже, что в вашем коде есть синтаксическая ошибка. Пытаться:
У вас были дополнительные скобки, рядом с
$.ajax
которыми не было необходимости. Если вы по-прежнему получаете сообщение об ошибке, файл сценария jQuery не загружается.источник
$.ajax()();
. Это действительный JavaScript. Это означает «позвони$.ajax
и все, что он возвращает, позвони также». Но$.ajax
не возвращает функцию (которая может быть вызвана), она возвращаетjqXHR
объект, поэтому выдает ошибку. Ваш ответ правильный, дополнительные()
проблемы, но описание проблемы неправильное (это не синтаксическая ошибка, по крайней мере, не для синтаксического анализатора).$
), но это не синтаксическая ошибка в том смысле, что это допустимый JS. Это просто не подходящий синтаксис для желаемого поведения, поэтому он вызывает ошибку во время выполнения, как объяснил Феликс.Оформить заказ Документация Jquery
источник
У вас есть ошибка в вашей функции AJAX, слишком много скобок, попробуйте вместо
$.ajax({
источник
Обратитесь к минимальной версии jquery, включающей ajax:
источник
Существует синтаксическая ошибка, поскольку вы поместили круглые скобки после функции ajax и другой набор скобок для определения списка аргументов: -
Как вы написали: -
Скобка вокруг ajax должна быть удалена, она должна быть:
источник
Я столкнулся с тем же вопросом, и мое решение было: добавить скрипт JQuery.
В частности, мы должны убедиться, что соответствующий JQuery загружен, когда мы отлаживаем наши js под firefox / chrome.
источник
Если вы используете загрузочный HTML-шаблон, не забудьте удалить ссылку на jquery slim в нижней части шаблона. Я публикую эту деталь здесь, так как пока не могу комментировать ответы ..
источник
Для тех, кто пытается запустить это в nodejs : это не будет работать из коробки, так как jquery нуждается в браузере (или подобном)! Я просто пытался запустить импорт и вел логи,
console.log($)
которые писали,[Function]
а потом иconsole.log($.ajax)
возвращалиundefined
. У меня не былоtsc
ошибок и автозаполнение от intellij, поэтому мне было интересно, что происходит.Затем в какой-то момент я понял, что это
node
может быть проблема, а не машинопись. Я попробовал тот же код в браузере, и он работал. Чтобы это работало, вам нужно запустить:(кредиты: https://stackoverflow.com/a/4129032/3022127 )
источник
Это слишком поздно для ответа, но этот ответ может быть полезным для будущих читателей.
Я хотел бы поделиться сценарием, где, скажем, есть несколько файлов HTML ( один базовый HTML и несколько суб-HTML ) и $ .ajax используется в одном из суб-HTML.
Предположим, что во вложенном HTML-коде js включен через URL-адрес « https://code.jquery.com/jquery-3.5.0.js », а в базовый / родительский HTML- код через URL-адрес - « https: //code.jquery». .com / JQuery-3.1.1.slim.min.js ", тогда тонкая версия JS будет использоваться на всех страницах, которые используют этот суб-HTML, а также базовый HTML, упомянутый выше.
Это особенно верно в случае использования загрузочного фреймворка, который загружает JS с использованием " https://code.jquery.com/jquery-3.1.1.slim.min.js ".
Поэтому, чтобы решить проблему, необходимо убедиться, что на всех страницах js включен через URL-адрес « https://code.jquery.com/jquery-3.5.0.js » или любой другой последний URL-адрес, содержащий все библиотеки JQuery.
Спасибо Лили Х. за указание на этот ответ.
источник
позвольте мне поделиться своим опытом:
мой дизайнер HTML-страницы использовать:
когда я создаю простой запрос AJAX, получая сообщение об ошибке, TypeError: $ .ajax (…) не является функцией
Итак, я добавляю:
тогда это прекрасно работает для меня по крайней мере.
источник