TypeError: $ .ajax (…) is geen functie?

Ik probeer een eenvoudig AJAX-verzoek te maken dat een aantal gegevens van een MySQL-database retourneert. Hier is mijn functie hieronder:

function AJAXrequest(url, postedData, callback) {
    $.ajax() ({
        type: 'POST',
        url: url,
        data: postedData,
        dataType: 'json',
        success: callback
    });
}

… en hier is waar ik noem, het parseren in de vereiste parameters:

AJAXrequest('voting.ajax.php', imageData, function(data) {
    console.log("success!");
});

Nog, mijn succes callback loopt niet (als “succes!” is niet ingelogd op de console), en ik krijg een fout in mijn console:

TypeError: $.ajax(...) is not a function.
success: callback

Wat betekent dit? Ik heb Ajax-verzoeken al eerder gedaan waar het succesevenement een anonieme functie in de binnenkant van $ .ajax triggert, maar nu probeer ik een afzonderlijke naam van de naam (in dit geval een callback) uit te voeren. Hoe ga ik hierover?


Antwoord 1, Autoriteit 100%

Geen van de antwoorden hier hielp me. Het probleem was: Ik gebruikte de slanke build van jQuery , die wat dingen verwijderd had, Ajax is een van hen.

De oplossing: Download gewoon de reguliere (gecomprimeerde of niet) versie van JQuery hier en opnemen in uw project.


Antwoord 2, Autoriteit 13%

Dubbelecontrole of u een full-versie van jQuery gebruikt en niet een slanke versie.

Ik gebruikte de jQuery cdn-script link die bij jQuery wordt geleverd. Het probleem is dat deze standaard slim.jquery.js is, die niet de functie ajaxbevat. Dus, als je (van de Bootstrap-website gekopieerde versie) een jQuery-scriptlink met een slanke versie gebruikt, gebruik dan de volledige versie.

Dat wil zeggen gebruik
<script src="https://code.jquery.com/jquery-3.1.1.min.js">
in plaats van
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"


Antwoord 3, autoriteit 2%

Niet zeker, maar het lijkt erop dat je een syntaxisfout in je code hebt. Probeer:

$.ajax({
  type: 'POST',
  url: url,
  data: postedData,
  dataType: 'json',
  success: callback
});

Je had extra haakjes naast $.ajaxdie niet nodig waren. Als je de foutmelding nog steeds krijgt, is het jQuery-scriptbestand niet geladen.


Antwoord 4

Bekijk de JQuery-documentatie

Beëindigingskennisgeving: de callbacks jqXHR.success(), jqXHR.error() en jqXHR.complete() worden verwijderd vanaf jQuery 3.0. U kunt in plaats daarvan jqXHR.done(), jqXHR.fail() en jqXHR.always() gebruiken.


Antwoord 5

Refereer naar de min-versie van jQuery die ajax bevat:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

Antwoord 6

Ik gebruikte de volgende versie van jQuery en het werkte

<script src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>

Antwoord 7

Je hebt een fout in je AJAX-functie, te veel haakjes, probeer in plaats daarvan $.ajax({


Antwoord 8

Er is een syntaxisfout omdat u haakjes hebt geplaatst na de ajax-functie en een andere set haakjes om de lijst met argumenten te definiëren:-

Zoals je hebt geschreven:-

$.ajax() ({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

Het haakje rond ajax moet worden verwijderd, het moet zijn:-

$.ajax({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

Antwoord 9

Ik weet dat dit een oud bericht is — en Gus heeft het eigenlijk beantwoord.
Maar in mijn ervaring heeft JQuery sindsdien hun code voor het importeren van het CDN gewijzigd – dus ik dacht dat ik door zou gaan en hun nieuwste code voor het importeren van het CDN zou posten:

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>

Antwoord 10

Ik kwam dezelfde vraag tegen en mijn oplossing was: voeg het JQuery-script toe.

We moeten er vooral voor zorgen dat de bijbehorende JQuery wordt geladen wanneer we onze js debuggen onder firefox/chrome.


Antwoord 11

Als u een Bootstrap html-sjabloon gebruikt, vergeet dan niet om de link naar jQuery slim onderaan de sjabloon te verwijderen. Ik post dit detail hier omdat ik nog geen reacties kan geven op antwoorden..


Antwoord 12

Voor iedereen die dit probeert uit te voeren in nodejs: het zal niet direct werken, aangezien jQuery een browser (of iets dergelijks) nodig heeft! Ik probeerde gewoon de import uit te voeren en logde console.log($)die [Function]schreef en vervolgens ook console.log($.ajax)die undefinedretourneerde. Ik had geen tsc-fouten en had automatisch aanvullen van intellij, dus ik vroeg me af wat er aan de hand was.

Toen realiseerde ik me op een gegeven moment dat nodehet probleem zou kunnen zijn en niet typoscript. Ik probeerde dezelfde code in de browser en het werkte. Om het te laten werken, moet je uitvoeren:

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }
    var $ = require("jquery")(window);
});

(credits: https://stackoverflow.com/a/4129032/3022127)


Antwoord 13

Dit is te laat voor een antwoord, maar dit antwoord kan nuttig zijn voor toekomstige lezers.

Ik wil graag een scenario delen waarin bijvoorbeeld meerdere html-bestanden zijn (één basis-html en meerdere sub-HTML’s) en $.ajax wordt gebruikt in een van de sub-HTML’s.

Stel dat in de sub-HTML js is opgenomen via de URL “https:// code.jquery.com/jquery-3.5.0.js” en in de basis/ouder HTML, via URL -“https://code.jquery.com/jquery-3.1.1.slim.min.js“, dan wordt de slanke versie van JS gebruikt op alle pagina’s die deze sub-HTML gebruiken, evenals de hierboven genoemde basis-HTML.

Dit geldt met name voor het gebruik van Bootstrap-framework dat JS laadt met behulp van “https://code.jQuery.com/jQuery-3.1.1.slim.min.js “.

Dus om het probleem op te lossen, moet u ervoor zorgen dat JS op alle pagina’s is opgenomen via URL “https://code.jQuery.com/jQuery-3.5.0.js ” of wat dan ook de nieuwste URL bevat alle jQuery-bibliotheken.

Dankzij Lily h. voor het wijzen van mij naar dit antwoord.


Antwoord 14

Gebruik de Slank Build of JQuery, die de Ajax-functie erin niet heeft. Gebruik de Full -versie in plaats van https://jquery.com/download/

Opmerking: Zorg ervoor dat u de JQuery-link niet gebruikt, gekopieerd van Bootstrap-website, omdat ze de slanke versie gebruiken.


Antwoord 15

Laat me mijn ervaring delen:

Mijn HTML-pagina Designer Gebruik:

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>

Wanneer ik een Simple Ajax-aanvraag maak, krijgt u een foutmelding,
TypeError: $ .ajax (…) is geen functie

Dus, ik voeg toe:

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

Dan werkt het tenminste perfect voor mij.


Antwoord 16

Dat is een probleem met uw versie van JQuery.
Kijk hier
https://code.jquery.com/
en voeg dit script toe

<script
  src="https://code.jquery.com/jquery-3.5.1.js"
  integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
  crossorigin="anonymous">
</script>

Other episodes