2012-10-23 6 views
0

Je n'ai aucun moyen de savoir si la requête ajax est vraie ou fausse en utilisant livevalidation.js. Il renvoie toujours le nom d'utilisateur que la fonction php exécute false ou true;retourne toujours false dans livevalidation

Code PHP

public function valid_username() 
{ 
    $is_username_exist = 'some query here'; 

    if($is_username_exist == true){ 
     $output['success'] = true; 
    }else{ 
     $output['success'] = false; 
    } 

    echo json_encode($output); 
} 

code JS

$(document).ready(function() { 
var username = new LiveValidation('username',{validMessage: 'Available', wait:500}); 
username.add(Validate.Presence); 
username.add(Validate.Length, { minimum: 4, maximum: 10 }); 
username.add(Validate.Custom, { against: function() { return check_username_availability('username', '#username', base_url+'cms-profile/profile_ajax/valid_username');}, failureMessage: 'Username already taken' }); 

}); 

function check_username_availability(name, id, postUrl) 
{ 
var dataVal = name+'='+$(id).val(); 

    $.ajax({ 
    url: postUrl, 
    cache: false, 
    type: 'post', 
    dataType: 'json', 
    data: dataVal, 
    async: false, 
    success: function(data) { 
    return $.parseJSON(data); 
    } 
    }); 
} 

Répondre

0

Lorsque vous POSTer avec les données de jeu de ajax comme ceci:

$.ajax({ 
    url: postUrl, 
    cache: false, 
    type: 'post', 
    dataType: 'json', 
    data: {'name':name , 'id': id}, 
    async: false, 
    success: function(data) { 
    return data.success; 
    } 
    }); 

Et ne pas utiliser parseJSON. Il n'y a pas besoin car vous pouvez retourner directement votre valeur de responde.

+0

Merci @Svetlio pour les commentaires, toujours la même chose que la sortie de livevalidation.js est toujours "nom d'utilisateur déjà pris" – jalf

Questions connexes