2012-10-23 38 views
0

如果使用livevalidation.js的ajax请求为true或false,我无法捕获。无论执行哪个php函数,它总是返回用户名为false或true;在生效验证中总是返回false

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); 
} 

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); 
    } 
    }); 
} 

回答

0

当你与阿贾克斯一组数据,这种方式张贴内容:

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

而且不使用parseJSON。没有必要,因为你可以直接返回你的responde值..

+0

感谢@Svetlio的反馈,仍然是相同的输出livevalidation.js仍然是“用户名已采取” – jalf