Я пытаюсь создать простой запрос 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!");
});
на странице voting.ajax.php
, я сейчас просто возвращаю переменную JSON, равную 1 для тестирования:
$someNumber = 1;
return json_encode($someNumber);
Тем не менее, мой успешный обратный вызов не запускается (поскольку "success!" Не регистрируется в консоли), и я получаю сообщение об ошибке в моей консоли:
TypeError: $.ajax(...) is not a function.
success: callback
Что это значит? Я делал запросы AJAX до того, когда событие успеха вызывает анонимную функцию внутри $.ajax, но теперь я пытаюсь запустить отдельную именованную функцию (в данном случае - обратный вызов). Как мне это сделать?
Ни один из ответов здесь не помог мне. Проблема была в том, что я использовал тонкую сборку jQuery, которая удалила некоторые вещи, ajax был одним из них.
Решение. Просто скачайте обычную (сжатую или не) версию jQuery здесь и включите ее в свой проект.
$.ajax
удаляется из «стройной» сборки?
Дважды проверьте, используете ли вы полную версию 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"
Не уверен, но похоже, что у вас есть синтаксическая ошибка в коде. Пытаться:
$.ajax({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
У вас были дополнительные скобки рядом с $.ajax
которые не нужны. Если вы все еще получаете ошибку, тогда файл сценария jQuery не загружается.
Оформить заказ Документация JQuery
Уведомление об изъятии: обратные вызовы jqXHR.success(), jqXHR.error() и jqXHR.complete() удаляются с jQuery 3.0. Вместо этого вы можете использовать jqXHR.done(), jqXHR.fail() и jqXHR.always().
У вас есть ошибка в вашей функции 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
});
Для тех, кто пытается запустить это в 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/questions/1801160/can-i-use-jquery-with-node-js)
Я столкнулся с тем же вопросом, и моим решением было: добавить сценарий JQuery.
В частности, мы должны убедиться, что соответствующий JQuery загружен, когда мы отлаживаем наши js под firefox/chrome.