У меня проблема с разрешением моего ответа, который всегда разрешается как истинный. Я отправляю форму для забытого пароля, и у меня есть только одно поле, это электронная почта. Я проверяю базу данных для записи на базе по электронной почте, и если запись возвращается, я устанавливаю json в true, иначе false. Вот код из моего контроллера CodeIgniter:Ответ 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
Каков результат '$ (this).find ("# checkemail"). val(); ' –
и вам не хватает трех точек с запятой, этот оператор внутри if и else' $ ('# successMailMessage'). fadeIn() '. и после окончания '$ .post'. Поэтому проверьте это. и дайте мне знать –