'Cannot Return Result from jQuery AJAX from a Function [duplicate]
I have a function using jQuery AJAX to return data from a data file. However, I cannot get the function to return the value. Any ideas?
$(document).ready(function () {
function getdata() {
var result = 'default value';
$.ajax({
url: 'data/json/load.json',
method: 'GET',
dataType: 'json',
success: function (response) {
result = response.data;
console.log('this is working and the result is: ' + result);
return result;
}
});
return result;
}
var returndata = getdata();
//I'm trying to return the results from my AJAX call here:
console.log(returndata)
});
Solution 1:[1]
$(document).ready(function () {
async function getdata() {
await $.ajax({
url: 'https://api.publicapis.org/entries',
method: 'GET',
dataType: 'json',
success: function (response) {
result = response;
}
});
return result
}
getdata().then((result) => console.log(result));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Solution 2:[2]
You should get familiar with how Promises work, they're very convenient.
That's how You could use them in your code:
$(document).ready(function () {
async function getdata() {
var result = 'default value'
await $.ajax({
url: 'https://api.publicapis.org/entries',
method: 'GET',
dataType: 'json',
success: function (response) {
result = response
console.log('this is working and the result is: ' + result)
}
})
return result;
}
getdata().then(function(result) {
returndata = result
console.log(returndata)
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Omicron |
