我解决我的问题总是解决为真。我正在提交忘记密码的表单,并且我只有一个字段,即电子邮件。我根据电子邮件检查数据库中的记录,如果记录被返回,我将json设置为true,否则设置为false。这里是我笨控制器代码:JSON响应总是返回true
public function checkEmail()
{
// set the validation rules
$this->form_validation->set_rules('checkemail', 'E-Mail', 'valid_email');
$this->form_validation->set_error_delimiters('<br /><p class=jsdiserr>', '</p><br />');
// if validation is passed
if ($this->form_validation->run() != FALSE)
{
$ids=array();
$ids[0]=$this->db->where('email', $this->input->post('checkemail'));
$query = $this->backOfficeUsersModel->get();
if($query)
{
$data = array(
'userid' => $query[0]['userid'],
'username' => $query[0]['username'],
'password' => $query[0]['password'],
'firstname' => $query[0]['firstname'],
'lastname' => $query[0]['lastname'],
'email' => $query[0]['email']
);
$currentUser = array();
$currentUser = $this->session->set_userdata($data);
echo json_encode(array("success" => "true"));
} else {
echo json_encode(array("success" => "false"));
}
// form validation has failed
} else {
$errorMessage = "Wrong email!";
}
} // end of function checkEmail
现在,当我在我的javascript文件检查结果,我得到总是如此。这里是代码:
$("#formSendPassword").submit(function(e){
e.preventDefault();
var email = $(this).find("#checkemail").val();
var obj = {email: email};
var url = $(this).attr("action");
$.post(url, obj, function(r){
if(r.success == "true") {
console.log(r.success);
$('#forgotPasswordForm').hide();
$('#successMailMessage').fadeIn()
} else {
$('#forgotPasswordForm').hide();
$('#errorMailMessage').fadeIn()
}
}, 'json')
})
任何人都可以帮我一个这个吗?
问候,卓然
如果我在php中打印结果,我会得到正确的结果。但是,当我尝试console.log输出alwasy评估successMailMessage,即使它应该显示errorMailMessage。任何人? – Zoran 2013-02-22 14:52:13
'$(this)的输出是什么。find(“#checkemail”)。val();' – 2013-02-24 03:27:12
,你缺少三个分号,这个语句在if和else'$('#successMailMessage')。fadeIn()'中。并在'$ .post'结尾后面。所以检查出来。并让我知道 – 2013-02-24 03:34:48