J'essaie de créer une simple requête AJAX qui renvoie des données d'une base de données MySQL. Voici ma fonction ci-dessous:
function AJAXrequest(url, postedData, callback) {
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
}
... et voici où je l'appelle, en analysant les paramètres requis:
AJAXrequest('voting.ajax.php', imageData, function(data) {
console.log("success!");
});
Pourtant, mon rappel de succès ne s'exécute pas (car "success!" N'est pas connecté à la console) et j'obtiens une erreur dans ma console:
TypeError: $.ajax(...) is not a function.
success: callback
Qu'est-ce que ça veut dire? J'ai déjà fait AJAX demandes auparavant où l'événement success déclenche une fonction anonyme dans $ .ajax, mais j'essaie maintenant de lancer une fonction nommée distincte (dans ce cas, un rappel). Comment puis-je m'y prendre?
Aucune des réponses ici ne m'a aidé. Le problème était le suivant: J'utilisais la version simplifiée de jQuery , qui supprimait certaines choses, dont ajax.
La solution: il suffit de télécharger la version régulière (compressée ou non) de jQuery ici et de l’inclure dans votre projet.
Vérifiez si vous utilisez la version complète de jQuery et non une version slim.
J'utilisais le lien jquery cdn-script fourni avec jquery. Le problème est celui par défaut, slim.jquery.js, qui ne contient pas la fonction ajax
. Donc, si vous utilisez (copie-collée à partir du Bootstrap site Web) lien de script de la version slim jquery, utilisez plutôt la version complète.
C'est-à-dire utiliser <script src="https://code.jquery.com/jquery-3.1.1.min.js">
au lieu de <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
Pas sûr, mais il semble que vous ayez une erreur de syntaxe dans votre code. Essayer:
$.ajax({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
Vous aviez des crochets supplémentaires à côté de $.ajax
qui n'étaient pas nécessaires. Si l'erreur persiste, le fichier de script jQuery n'est pas chargé.
Commander The Jquery Documentation
Avis de dépréciation : Les rappels jqXHR.success (), jqXHR.error () et jqXHR.complete () sont supprimés à compter de jQuery 3.0. Vous pouvez utiliser jqXHR.done (), jqXHR.fail () et jqXHR.always () à la place.
Vous avez une erreur dans votre fonction AJAX, trop de crochets, essayez plutôt $.ajax({
Il y a une erreur de syntaxe car vous avez placé des parenthèses après la fonction ajax et un autre ensemble de parenthèses pour définir la liste d'arguments: -
Comme vous l'avez écrit:
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
La parenthèse autour d'ajax doit être supprimée, elle devrait être: -
$.ajax({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
J'ai rencontré la même question et ma solution était la suivante: ajoutez le script JQuery.
Surtout, nous devrions nous assurer que le JQuery correspondant est chargé lorsque nous déboguons notre js sous le firefox/chrome.
Pour ceux qui essaient d'exécuter ceci dans nodejs : Cela ne fonctionnera pas immédiatement, car jquery a besoin d'un navigateur (ou similaire)! J'essayais simplement de lancer l'import et je consignais console.log($)
qui écrivait [Function]
, puis aussi console.log($.ajax)
qui renvoyait undefined
. Je n'avais pas d'erreurs tsc
et j'avais autocomplete de intellij, alors je me demandais ce qui se passait.
Puis, à un moment donné, j'ai réalisé que node
était peut-être le problème et non pas TypeScript. J'ai essayé le même code dans le navigateur et cela a fonctionné. Pour que cela fonctionne, vous devez exécuter:
require("jsdom").env("", function(err, window) {
if (err) {
console.error(err);
return;
}
var $ = require("jquery")(window);
});
(crédits: https://stackoverflow.com/a/4129032/3022127 )
Référencez la version jquery min qui inclut ajax:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>