Ich versuche, eine einfache AJAX-Anforderung zu erstellen, die einige Daten aus einer MySQL-Datenbank zurückgibt. Hier ist meine Funktion unten:
function AJAXrequest(url, postedData, callback) {
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
}
... und hier nenne ich es, indem ich die erforderlichen Parameter analysiere:
AJAXrequest('voting.ajax.php', imageData, function(data) {
console.log("success!");
});
Mein Erfolgsrückruf wird jedoch nicht ausgeführt (da "Erfolg!" Nicht an der Konsole protokolliert wird), und in meiner Konsole wird eine Fehlermeldung angezeigt:
TypeError: $.ajax(...) is not a function.
success: callback
Was bedeutet das? Ich habe zuvor AJAX-Anfragen gestellt, bei denen das Erfolgsereignis eine anonyme Funktion innerhalb von $ .ajax auslöst, aber jetzt versuche ich, eine separate benannte Funktion auszuführen (in diesem Fall einen Rückruf). Wie gehe ich vor?
$.ajax
ohne Argumente ($.ajax()
) aufgerufen und der Rückgabewert ist ein jqXHR-Objekt, das keine Funktion ist. Daher$.ajax()(...)
wird ein Fehler ausgelöst.Antworten:
Keine der Antworten hier hat mir geholfen. Das Problem war: Ich habe den schlanken Build von jQuery verwendet , bei dem einige Dinge entfernt wurden, darunter auch Ajax.
Die Lösung: Einfach die regelmäßige Download (komprimiert oder nicht) Version von jQuery hier und es in Ihrem Projekt.
quelle
$.ajax
aus dem "schlanken" Build entfernt?Überprüfen Sie noch einmal, ob Sie die Vollversion von jquery und keine schlanke Version verwenden.
Ich habe den jquery cdn-script Link verwendet, der mit jquery geliefert wird. Das Problem ist, dass dieses standardmäßig slim.jquery.js ist, das das nicht hat
ajax
Funktion . Wenn Sie also einen JQuery-Skript-Link mit schlanker Version verwenden (von der Bootstrap-Website kopiert), verwenden Sie stattdessen die Vollversion.Das heißt, verwenden
<script src="https://code.jquery.com/jquery-3.1.1.min.js">
statt<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
quelle
Ich bin mir nicht sicher, aber es sieht so aus, als ob Sie einen Syntaxfehler in Ihrem Code haben. Versuchen:
Sie hatten zusätzliche Klammern, neben
$.ajax
denen nicht benötigt wurden. Wenn der Fehler weiterhin angezeigt wird, wird die jQuery-Skriptdatei nicht geladen.quelle
$.ajax()();
. Dies ist gültiges JavaScript. Es bedeutet "Anruf$.ajax
und was auch immer es zurückgibt, nenne es auch". Gibt$.ajax
jedoch keine Funktion zurück (die aufgerufen werden könnte), sondern einjqXHR
Objekt, sodass ein Fehler ausgegeben wird. Ihre Antwort ist richtig, die zusätzlichen()
sind das Problem, aber die Beschreibung des Problems ist nicht korrekt (es ist kein Syntaxfehler, zumindest nicht für den Parser).$
), aber es ist auch kein Syntaxfehler, da es sich um gültiges JS handelt. Es ist einfach keine geeignete Syntax für das gewünschte Verhalten, daher verursacht es einen Laufzeitfehler, wie von Felix erklärt.Kasse Die Jquery-Dokumentation
quelle
Sie haben einen Fehler in Ihrer AJAX-Funktion, zu viele Klammern, versuchen Sie es stattdessen
$.ajax({
quelle
Verweisen Sie auf die jquery min-Version, die ajax enthält:
quelle
Es liegt ein Syntaxfehler vor, da Sie nach der Ajax-Funktion eine Klammer und einen weiteren Satz Klammern gesetzt haben, um die Argumentliste zu definieren: -
Wie Sie geschrieben haben:
Die Klammer um Ajax muss entfernt werden. Es sollte sein: -
quelle
Ich bin auf dieselbe Frage gestoßen, und meine Lösung lautete: Fügen Sie das JQuery-Skript hinzu.
Insbesondere sollten wir sicherstellen, dass die entsprechende JQuery geladen ist, wenn wir unsere js unter Firefox / Chrome debuggen.
quelle
Wenn Sie eine Bootstrap-HTML-Vorlage verwenden, müssen Sie den Link zu jquery slim am unteren Rand der Vorlage entfernen. Ich poste dieses Detail hier, da ich noch keine Antworten kommentieren kann.
quelle
Für alle, die versuchen, dies in nodejs auszuführen : Es wird nicht sofort funktionieren, da jquery einen Browser (oder ähnliches) benötigt! Ich habe nur versucht, den Import zum Laufen zu bringen und habe protokolliert,
console.log($)
was geschrieben[Function]
und dann auchconsole.log($.ajax)
zurückgegeben wurdeundefined
. Ich hatte keintsc
Fehler und hatte Autocomplete von Intellij, also fragte ich mich, was los ist.Dann wurde mir irgendwann klar, dass
node
dies das Problem sein könnte und nicht das Typoskript. Ich habe den gleichen Code im Browser ausprobiert und es hat funktioniert. Damit es funktioniert, müssen Sie Folgendes ausführen:(Credits: https://stackoverflow.com/a/4129032/3022127 )
quelle
Dies ist zu spät für eine Antwort, aber diese Antwort kann für zukünftige Leser hilfreich sein.
Ich möchte ein Szenario teilen, in dem beispielsweise mehrere HTML-Dateien ( ein Basis-HTML und mehrere Sub-HTMLs ) vorhanden sind und $ .ajax in einem der Sub-HTMLs verwendet wird.
Angenommen, im Unter-HTML ist js über die URL " https://code.jquery.com/jquery-3.5.0.js " und im Basis- / übergeordneten HTML über die URL " https: //code.jquery " enthalten .com / jquery-3.1.1.slim.min.js ", dann wird die schlanke Version von JS auf allen Seiten verwendet, die dieses Sub-HTML sowie das oben erwähnte Basis-HTML verwenden.
Dies gilt insbesondere für die Verwendung des Bootstrap-Frameworks, das js mit " https://code.jquery.com/jquery-3.1.1.slim.min.js " lädt " .
Um das Problem zu beheben, müssen Sie sicherstellen, dass js auf allen Seiten über die URL " https://code.jquery.com/jquery-3.5.0.js" enthalten ist " oder die neueste URL mit allen JQuery-Bibliotheken enthalten ist.
Vielen Dank an Lily H., die mich auf diese Antwort hingewiesen hat.
quelle
Lassen Sie mich meine Erfahrungen teilen:
Mein HTML-Seitendesigner verwendet:
Wenn ich eine einfache AJAX-Anfrage erstelle und eine Fehlermeldung erhalte, heißt es: TypeError: $ .ajax (…) ist keine Funktion
Also füge ich hinzu:
dann funktioniert es zumindest bei mir perfekt.
quelle