2012-10-23 1 views
0

livevalidation.js를 사용하여 ajax 요청이 true 또는 false 인 경우이를 catch 할 방법이 없습니다. PHP는 항상 false 또는 true로 실행되는 모든 사용자 이름을 반환합니다.livevalidation에서 항상 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을 사용하지 말아. 응답 값을 직접 반환 할 필요가 없습니다.

+0

의견을 보내 주신 @Svetlio에게 감사드립니다. livevalidation.js의 결과는 여전히 "Username Already Taken"입니다. – jalf