我有解决我的回复的问题,总是解决为真。我提交了一个忘记密码的表单,我只有一个字段,即电子邮件。我根据电子邮件检查数据库中的记录,如果返回记录,我将json设置为true,否则设置为false。这是我的Codeigniter控制器的代码:
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')
})
任何人都可以帮我一把吗?
的问候,卓然
答案 0 :(得分:1)
首先修改PHP ...
json_encode(array("success" => "true"));
到
json_encode(array("success" => true));
以及
json_encode(array("success" => "false"));
到
json_encode(array("success" => false));
然后通过更改...
按如下方式修改JSif(r.success == "true") {
为...
if(r.success === true) {
看看你如何离开那里!
编辑:在与OP联络时,我们得出结论,实际问题是JS发布数据的方式。
var obj = {email: email};
原本应该......
var obj = {checkemail: email};
PHP中还存在一些与该问题无关的特定问题,但现在已经修复。
答案 1 :(得分:0)
if ($this->form_validation->run() != FALSE)
应该是
if ($this->form_validation->run() !== FALSE)
或只是
if (!$this->form_validation->run())
chekc的最佳方式是假的......!=可能并不总是像你期望的那样!
您需要在JS中解析JSON:myObj = $.parseJSON(r);
然后使用myObj.success