在codeigniter中使用ajax检查用户名是否唯一

直截了当。 我正在检查我输入的用户名是否存在于数据库中。 所以我决定使用ajax。

预期的结果就像当我输入已经存在的用户名然后div样式得到更改并且错误消息出现在它下面但是这不是现在我不知道为什么?

我不熟悉ajax,所以你看到任何语法缺失或任何错误的技术,你可以指出它。

这是我的控制器function:

function check_userName_exists() { $user_name = $this->input->post('user_name'); log_message('debug', 'Posted Username by Ajax for Check it exist or not : '. print_r($user_name, TRUE)); $exists = $this->student_db->check_user_name($user_name); log_message('debug', 'Username Exist or not Response array: '. print_r($exists, TRUE)); $count = count($exists); // echo $count log_message('debug', 'Username Exist or not Response Count: '. print_r($count, TRUE)); if ($count == 1) { $data['unique'] = 1; print(json_encode($data)); } else { $data['unique'] = 0; print(json_encode($data)); } } 

这是我的模型function:

 function check_user_name($user_name) { $this->db->select('user_name'); $this->db->from('user'); $this->db->where('user_name', $user_name); $query = $this->db->get(); $query_last = $this->db->last_query(); log_message('debug', 'Find UserName is Unique Or Not Query: '. print_r($query_last, TRUE)); $result = $query->result_array(); log_message('debug', 'Find UserName is Unique Or Not Result: '. print_r($result, TRUE)); return $result; } 

这是Ajax脚本:

  function check_if_exists() { var user_name = $("#user_name").val(); // console.log(user_name); $.ajax({ type:'POST', url: "", data:{ 'user_name':user_name}, success:function(response) { if (response.unique = 1) { // alert(success); //console.log(response); $("#userNameDiv").addClass("has-warning"); $("#user_name").addClass("form-control-danger"); $("#userNameErrorMsg").text("This User Name Is Already Takken. Please Try Something Else."); } else { $("#userNameDiv").removeClass("has-warning"); $("#user_name").removeClass("form-control-danger"); $('#userNameErrorMsg').text(''); } } }); 

};

这是我的HTML:

 

在控制台中得到空白响应。

你的控制器函数总是返回0. Count返回一个整数,你正在检查它是否为空…更新下面的控制器代码来修复它。

Ajax期望json响应不是单个值。

在您的控制器中打印返回值,不要返回它。

 if ($count > 0) { $data['unique'] = 1; print(json_encode($data)); } else { $data['unique'] = 0; print(json_encode($data)); } 

然后在你的ajax函数中

 if (response.unique == '1') 

返回在这里不起作用,只是回应你的回应

 if (empty($count)) { echo '1'; } else { echo '0'; } 

还检查来自服务器的任何响应

 success:function(response) { console.log(response); // at beginning // your code }