Type Error $.ajax(…) is not a Function

I’m trying to create a simple AJAX request which returns some data from a MySQL database. Here’s my function below:

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

…and here’s where I call it, parsing in the required parameters:

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

Yet, my success callback does not run (as “success!” is not logged to the console), and I get an error in my console:

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

What does this mean? I’ve done AJAX requests before where the success event triggers an anonymous function inside of $.ajax, but now I’m trying to run a separate named function (in this case, a callback). How do I go about this?

This Post Has One Comment

  1. No Fault

    For anyone trying to run this in nodejs: It won’t work out of the box, since jquery needs a browser (or similar)! I was just trying to get the import to run and was logging console.log($) which wrote [Function] and then also console.log($.ajax) which returned undefined. I had no tsc errors and had autocomplete from intellij, so I was wondering what’s going on.

    Then at some point I realised that node might be the problem and not typescript. I tried the same code in the browser and it worked. To make it work you need to run:

    require(“jsdom”).env(“”, function(err, window) {
    if (err) {
    console.error(err);
    return;
    }

    var $ = require(“jquery”)(window);
    });

Leave a Reply