Próbuję utworzyć proste żądanie AJAX, które zwraca niektóre dane z bazy danych MySQL. Oto moja funkcja poniżej:
function AJAXrequest(url, postedData, callback) {
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
}
... i tutaj go nazywam, analizując wymagane parametry:
AJAXrequest('voting.ajax.php', imageData, function(data) {
console.log("success!");
});
Jednak moje wywołanie zwrotne sukcesu nie działa (ponieważ „sukces!” Nie jest zalogowany do konsoli), aw konsoli pojawia się błąd:
TypeError: $.ajax(...) is not a function.
success: callback
Co to znaczy? Wcześniej wykonywałem żądania AJAX, gdy zdarzenie pomyślne wyzwala anonimową funkcję w $ .ajax, ale teraz próbuję uruchomić osobną funkcję nazwaną (w tym przypadku wywołanie zwrotne). Jak mam to zrobić?
$.ajax
bez argumentów ($.ajax()
) i wartość zwracana jest obiektem jqXHR, która nie jest funkcją. Dlatego$.ajax()(...)
wyrzuci błąd.Odpowiedzi:
Żadna z odpowiedzi tutaj nie pomogła mi. Problem polegał na tym, że używałem cienkiej wersji jQuery , która usunęła pewne rzeczy, a jedną z nich jest ajax.
Rozwiązanie: Wystarczy pobrać regularne (skompresowany lub nie) wersję jQuery tutaj i umieścić go w swoim projekcie.
źródło
$.ajax
usuwany z „cienkiej” wersji?Sprawdź dwukrotnie, czy używasz pełnej wersji jquery, a nie jakiejś smukłej wersji.
Korzystałem z linku do skryptu cdn-jquery, który jest dołączony do jquery. Problem polega na tym, że domyślnie jest to slim.jquery.js, który nie ma w sobie tej
ajax
funkcji. Jeśli więc używasz (sklejonego ze strony Bootstrap) skróconego linku do skryptu jquery, użyj pełnej wersji.To znaczy użyj
<script src="https://code.jquery.com/jquery-3.1.1.min.js">
zamiast<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
źródło
Nie jestem pewien, ale wygląda na to, że masz błąd składniowy w kodzie. Próbować:
Miałeś dodatkowe nawiasy,
$.ajax
które nie były potrzebne. Jeśli nadal pojawia się błąd, plik skryptu jQuery nie jest ładowany.źródło
$.ajax()();
. To jest poprawny JavaScript. Oznacza „zadzwoń$.ajax
i cokolwiek zwróci, zadzwoń również”. Ale$.ajax
nie zwraca funkcji (którą można wywołać), zwracajqXHR
obiekt, więc zgłasza błąd. Twoja odpowiedź jest prawidłowa, dodatkowe()
stanowią problem, ale opis problemu jest nieprawidłowy (nie jest to błąd składniowy, a przynajmniej nie dla parsera).$
), ale nie jest to również błąd składniowy, ponieważ jest to prawidłowy JS. Po prostu nie jest to odpowiednia składnia dla pożądanego zachowania, więc powoduje błąd w czasie wykonywania, jak wyjaśnił Felix.Kasa Dokumentacja Jquery
źródło
Wystąpił błąd w funkcji AJAX, za dużo nawiasów, spróbuj zamiast tego
$.ajax({
źródło
Odwołaj się do min wersji jquery, która obejmuje ajax:
źródło
Wystąpił błąd składniowy, ponieważ wstawiono nawias po funkcji ajax i inny zestaw nawiasów, aby zdefiniować listę argumentów: -
Jak napisałeś:
Nawias wokół ajax musi zostać usunięty powinien być: -
źródło
Napotkałem to samo pytanie, a moim rozwiązaniem było: dodaj skrypt JQuery.
Szczególnie powinniśmy upewnić się, że odpowiednie JQuery jest załadowane, gdy debugujemy nasze pliki js pod firefox / chrome.
źródło
Jeśli używasz szablonu HTML Bootstrap, pamiętaj o usunięciu łącza do JQuery Slim na dole szablonu. Publikuję ten szczegół tutaj, ponieważ nie mogę jeszcze komentować odpowiedzi ..
źródło
Dla każdego, kto próbuje uruchomić to w nodejs : To nie będzie działać po wyjęciu z pudełka, ponieważ jquery potrzebuje przeglądarki (lub podobnej)! Właśnie próbowałem uruchomić import i logowałem,
console.log($)
który napisał,[Function]
a następnieconsole.log($.ajax)
który zwróciłundefined
. Nie miałemtsc
błędów i miałem autouzupełnianie od intellij, więc zastanawiałem się, co się dzieje.W pewnym momencie zdałem sobie sprawę, że to
node
może być problem, a nie maszynopis. Próbowałem tego samego kodu w przeglądarce i działało. Aby działało, musisz uruchomić:(kredyty: https://stackoverflow.com/a/4129032/3022127 )
źródło
Na odpowiedź jest już za późno, ale odpowiedź ta może być pomocna dla przyszłych czytelników.
Chciałbym podzielić się scenariuszem, w którym powiedzmy, że istnieje wiele plików HTML ( jeden podstawowy HTML i wiele pod HTML ), a $ .ajax jest używany w jednym z pod HTML.
Załóżmy, że w sub-HTML, js jest zawarty poprzez URL „ https://code.jquery.com/jquery-3.5.0.js ” oraz w podstawowym / nadrzędnym HTML, poprzez URL - „ https: //code.jquery .com / jquery-3.1.1.slim.min.js ”, wówczas na wszystkich stronach, które używają tego sub-HTML, a także podstawowego HTML wspomnianego powyżej, będzie używana smukła wersja JS.
Jest to szczególnie prawdziwe w przypadku korzystania z frameworka bootstrap, który ładuje js przy użyciu „ https://code.jquery.com/jquery-3.1.1.slim.min.js ”.
Aby rozwiązać problem, należy upewnić się, że na wszystkich stronach plik js jest zawarty za pośrednictwem adresu URL „ https://code.jquery.com/jquery-3.5.0.js ” lub dowolnego innego najnowszego adresu URL zawierającego wszystkie biblioteki JQuery.
Dzięki Lily H. za skierowanie mnie do tej odpowiedzi.
źródło
Pozwól, że podzielę się swoim doświadczeniem:
mój projektant stron HTML:
kiedy tworzę proste żądanie AJAX, pojawia się komunikat o błędzie: TypeError: $ .ajax (…) nie jest funkcją
Dodam więc:
to przynajmniej działa dla mnie idealnie.
źródło