简体   繁体   English

在livevalidation中总是返回false

[英]always return false in livevalidation

I have no way to catch if the ajax request is true or false using livevalidation.js. 我没有办法使用livevalidation.js来了解ajax请求是对还是错。 It always return username whatever the php function executes to either false or true; 无论php函数执行的是false还是true,它总是返回用户名;

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

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

When you POSTing with ajax set data as this way: 使用ajax进行发布时,以这种方式设置数据:

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

And dont use parseJSON. 并且不要使用parseJSON。 There is no need as you can directly return your responde value.. 不需要,因为您可以直接返回您的响应者值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM