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?
Checkout The Jquery Documentation
If you are using bootstrap html template remember to remove the link to jquery slim at the bottom of the template. I post this detail here as I cannot comment answers yet..
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 alsoconsole.log($.ajax)
which returnedundefined
. I had notsc
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:(credits: https://stackoverflow.com/a/4129032/3022127)
Double-check if you're using full-version of jquery and not some slim version.
I was using the jquery cdn-script link that comes with jquery. The problem is this one by default is slim.jquery.js which doesn't have the
ajax
function in it. So, if you're using (copy-pasted from Bootstrap website) slim version jquery script link, use the full version instead.That is to say use
<script src="https://code.jquery.com/jquery-3.1.1.min.js">
instead of<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"