0

我在解决我的回复时遇到问题,但我的回复总是正确的。我正在提交一份忘记密码的表格,我只有一个字段,那就是电子邮件。我根据电子邮件在数据库中检查记录,如果返回记录,我将 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')
    }) 

任何人都可以帮我解决这个问题吗?

问候,佐兰

4

2 回答 2

1

首先修改PHP...

json_encode(array("success" => "true"));

json_encode(array("success" => true));

并且

json_encode(array("success" => "false"));

json_encode(array("success" => false));

然后通过更改...修改JS如下

if(r.success == "true") {

到...

if(r.success === true) {

看看你如何从那里开始!


编辑:与 OP 联络后,我们得出结论,实际问题是 JS 发布数据的方式。

var obj = {email: email};

本来应该...

var obj = {checkemail: email};

PHP 还有一些与问题无关但现已修复的特定问题。

于 2013-02-23T17:15:32.113 回答
0
if ($this->form_validation->run() != FALSE) 

应该

if ($this->form_validation->run() !== FALSE) 

或者干脆

if (!$this->form_validation->run())

是检查错误的最佳方法...!= 可能并不总是如您所愿!

您需要在 JS 中解析 JSON:myObj = $.parseJSON(r);

然后使用myObj.success

于 2013-02-21T16:31:54.713 回答