I think my program is skipping result of JSON call. Is it possible to make a closure function here or make the program wait for JSON call to return?
function username_not_duplicate(username) {
var function_name = "get_username";
var parameters = [username];
var url = "/get_functions.php?function_name=" + function_name + "¶meters=" + parameters;
$.getJSON(url, function(user_name) {
if (user_name == true) {
return true;
}
});
return false;
}
The $.getJSON()
API call is asynchronous. You can make it synchronous by using $.ajax()
this way:
function username_not_duplicate(username) {
var function_name = "get_username";
var parameters = [username];
var url = "/get_functions.php?function_name=" + function_name + "¶meters=" + parameters;
var rslt = false;
$.ajax({
async: false,
url: url,
dataType: "json",
success: function(data) {
if (data == true) {
rslt = true;
}
}
});
return rslt;
}
Drew's answer is nearly perfect, just missing one bracket and comma for IE.
function username_not_duplicate(username) {
var function_name = "get_username";
var parameters = [username];
var url = "camps/includes/get_functions.php?function_name=" + function_name + "¶meters=" + parameters;
var rslt = false;
$.ajax({
async: false,
url: url,
dataType: "json",
success: function(data) {
if (data == true) {
rslt = true;
}
},
});
return rslt;
}
Another choice is to use a call back function and pass it to the function that executes the getJSON as:
//this is the function that executes my getJSON
//callback is the name of my callback function
function getMyData( callback ){
//here you do your getJSON call
$.getJSON(url, function(items){
//do your stuff here
//call your function here (at the end)
callback();
});
}
This way your callback function will be called at the end of the getJSON call.
Yeap, username_not_duplicate
just returns false
immediately because getJSON
is asynchronous (ie non-blocking). The return true
statement just returns true
from the response handler.
Normally, you shouldn't do such a blocking calls you're trying to achieve. I suppose you can consider remembering of a state of the request somewhere globally.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With