[英]Codeigniter get ajax response and pass that data from controller to view
[英]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.