views:

703

answers:

1

I want to have a javascript function such as this:

function isUsernameAvailable(username)
{
   //Code to do an AJAX request and return true/false if
  // the username given is available or not
}

How can this be accomplished using Jquery or Xajax?

+2  A: 

The big win when using AJAX is that it is asynchronous. You're asking for a synchronous function call. This can be done, but it might lock up the browser while it is waiting for the server.

Using jquery:

function isUsernameAvailable(username) {
    var available;
    $.ajax({
        url: "checkusername.php",
        data: {name: username},
        async: false, // this makes the ajax-call blocking
        dataType: 'json',
        success: function (response) {
            available = response.available;
        }
     });
     return available;
}

Your php-code should then check the database, and return

{available: true}

if the name is ok.

That said, you should probably do this asynchronously. Like so:

function checkUsernameAvailability(username) {
    $.getJSON("checkusername.php", {name: username}, function (response) {
        if (!response.available) {
            alert("Sorry, but that username isn't available.");
        }
    });
}
Magnar
I did something similar but simpler, using $.post() to call a page, and the page only echoes out a 0 or 1 ;)
Click Upvote
Maybe if you hadn't done it simpler, it would actually work. Ref your next question: http://stackoverflow.com/questions/577564/javascript-variable-scoping-question
Magnar