我想在我的视图中从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成功,但没有成功。 谁能告诉我我做错了什么?
的问候,卓然
答案 0 :(得分:0)
在将json响应传递给视图之前,应该使用$ data数组元素来存储它。这个视图是你的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,而不仅仅是成功。让我知道
答案 1 :(得分:0)
您的控制器正在设置最终数据,但您不打印出来。我没有发现你的数组使用json_encode转换为json,然后将其打印出来。
尝试一下。另外你填充了arrray然后为什么再次做一个= array()?
$jsonResp['success'] = "Ok";
$jsonResp = array();
查看此链接是否可以帮助您:http://amitavroy.com/justread/content/articles/getting-ajax-data-using-views-codeigniter