繁体   English   中英

如何从codeigniter视图中的json ajax调用获取响应?

[英]how to get response from json ajax call in codeigniter view?

我试图从codeigniter控制器获得响应,但没有成功。 这是我的javascript文件中的代码:

 // user enter his e-mail so check him against the database.
   $("#formSendPassword").submit(function(e){     

       e.preventDefault();

        var email = $(this).find("#checkemail").val();

        var obj = {email: email};
        var url = $(this).attr("action");
        var data =  {email: email};

        $.post(url, obj,data, function(jsonResp){
           console.log(success);
            if(jsonResp.success) {
                     alert(jsonResp['success']);
                    $('#successMailMessage').fadeIn();

          }  else {
                    alert("Fail");
                    $('#errorMailMessage').fadeIn();
                    }

        }, 'json');
    })

我的控制器中的代码如下:

 public function checkEmail()
    {     
        // set the validation rules
        $this->form_validation->set_rules('checkemail', 'E-Mail', 'valid_email|required|trim|encode_php_tags');

        $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']
                ); 

                $jsonResp['success'] = "Ok";
                $jsonResp = array();
        } else {   
               // echo json_encode(array("success" => false, "error" => "Wrong email"));
                $jsonResp['success'] = "Fail";
        }
        //  form validation has failed 
        } else {     
            $errorMessage = "Please enter valid e-mail";
        }
    }   // end of function checkEmail 

如您所见,我试图在我的js文件中console.log成功,但是没有成功。 谁能告诉我我在做什么错?

此致卓兰

您应该使用$ data数组元素存储json响应,然后再将其传递到视图。 此视图是您的JavaScript回调正在寻找的json响应。 我的猜测是您的控制台日志调用永远不会触发。

请尝试以下操作:

在您的Controller代码中,如下所示:

 $data['json'] = json_encode(array("success" => false, "error" => "Wrong email"));
 $this->load->view('json_response', $data);

如下定义视图:

<?php
    $this->output->set_header('Content-Type: application/json; charset=utf-8');
    echo $json;
?>

您还应该在jQuery调用中定义一个数据类型(dataType:“ json”)。

编辑:所以您的jQuery帖子调用应如下所示:

$.post(url, data, function(data) {
    console.log(data.sucess);
}, "json");

您也不需要传递obj。 此外,您需要记录data.success,而不仅仅是成功。 让我知道

您的控制器正在设置最终数据,但您没有将其打印出来。 我没有找到使用json_encode将其数组转换为json并随后将其打印出来的数组。

试试看。 另外,您正在填充错误,然后为什么又要执行= array()?

$jsonResp['success'] = "Ok";
$jsonResp = array();

查看此链接是否对您有帮助: http : //amitavroy.com/justread/content/articles/getting-ajax-data-using-views-codeigniter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM