Ace 1 Ace 1 - 1 month ago 9
Ajax Question

If Statement AFTER Ajax Call

I've tried

async: false
but nothing seems to work for me.

var user = $('#element').text(),
// user == 'KendrisX'
ref;

$.ajax({
type : 'get',
async : 'false',
url : '/memberlist?username=' + user,
success : function(data) {
if ( $('#link', data).html() ) ref = $('#link', data).attr('href');
// ref == '/u1'
}
});

if ( ref != undefined ) {
// Code Block here
}


All I'm trying to do is to run the AJAX call and check if the variable
ref
has been defined yet. If it has, then I want to run a certain code block.

All of this will be executed within jQuery's
$.each
function so I plan to use
$(this)
within the if statement (which won't work in the AJAX call.

Answer
async : 'false',

'false' is a string, which is a true value, it is not the same as false which is a boolean false.


That said, synchronous requests on the main thread are deprecated, so don't do that. Handle the result in the success function instead.

All of this will be executed within jQuery's $.each function so I plan to use $(this) within the if statement (which won't work in the AJAX call.

Yes, it will. You just need to pass the right value in. (e.g. with bind or an arrow function)

success : function(data) {
    if ( $('#link', data).html() ) ref = $('#link', data).attr('href');
    // ref == '/u1'
}.bind(this)
Comments