我的控制器中有一个功能:
function getAllExpense()
{ $date=$this->frenchToEnglish_date($this->input->post('date'));
$id_user=$this->session->userdata('id_user');
$where=array('date'=>$date, 'id_user'=>$id_user);
$allExpenses=$this->expenses_model->get_all('depenses',$where);
return json_encode($allExpenses);
}
在视图中,我需要对getAllExpense执行ajax_call,但是我还需要在成功的情况下检索getAllExpense返回的结果(我不能这样做)。这是我的观点
function searchExpense()
{
var date= $('#dateSearch').val();
$.ajax({
type:'POST',
url : '<?php echo site_url()."/public/expenses/getAllExpense/"; ?>',
data :'date='+date,
success:function(data)
{ $('#searchExpense').toggle();
}
});
}
最后是表格:
<div id="searchExpense" class="toogle_form" style="display:none">
<label><strong>Vos depenses :</strong></label>
<?php
if (isset($allExpenses) && ! empty($allExpenses))
{
foreach ($allExpenses as $expense)
{
echo $expense['id_depense'] ;
echo ' ';
echo $expense['commentaire'];
echo '</br>';
}
}
else
{
echo 'Vous n\'avez pas eu de depenses pour cette date';
}
?>
</div>
这不会在浏览器上显示任何内容。 我不能通过在getAllExpense中加载视图来使用发送数据的方法,因为我已经将它加载到函数索引中。 有人可以帮我吗?
答案 0 :(得分:3)
在你的控制器函数getAllExpense中,尝试使用标头而不是使用return来回显你的json数据:
改变这个:
return json_encode($allExpenses);
到:
$this->output->set_header('Content-Type: application/json; charset=utf-8');
echo json_encode($allExpenses);
答案 1 :(得分:1)
向后阅读我理解getAllExpense
是您的函数名称,expenses
是您的控制器名称......什么是/public/
?
目前您正在使用data :'date='+date
。这是不正确的。 $.ajax
期望一个对象为data
参数。使用data: {date: date}
。
如果你期望从服务器获取json,请告诉$.ajax
这样它可以正确解析响应。使用:dataType: 'json'
有助于调试在返回的数据上调用console.log()
。在回调中使用:console.log(data);
然后,打开您的网络工具。如果您正在使用Chrome,请按 ctrl + shift + j 并在触发AJAX请求时检查控制台选项卡。如果您转到网络选项卡并单击最近的请求(在底部),您也可以查看HTTP响应。
您没有添加表单。
如我所述,您最好使用Chrome的网络标签查看AJAX响应,但您也可以通过暂时更改您的功能将问题隔离到客户端1或服务器1:
function getAllExpense(){
//$date=$this->frenchToEnglish_date($this->input->post('date'));
$date = "12/21/2012"; /*or whatever your date format is.*/
$id_user=$this->session->userdata('id_user');
$where=array('date'=>$date, 'id_user'=>$id_user);
$allExpenses=$this->expenses_model->get_all('depenses',$where);
//return json_encode($allExpenses);
echo json_encode($allExpenses);
}
直接在网址栏中调用getAllExpense
。你将能够看到原始的json,并确定它是否是你满意的格式。