Javascript 如何在CodeIgniter中将json数组从控制器发送到视图
我的控制器中有一个功能:Javascript 如何在CodeIgniter中将json数组从控制器发送到视图,javascript,json,codeigniter,Javascript,Json,Codeigniter,我的控制器中有一个功能: 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); $allExpe
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_调用,但如果成功,我还需要检索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();
}
});
}
函数searchExpense()
{
var date=$('#dateSearch').val();
$.ajax({
类型:'POST',
url:“”,
数据:'date='+日期,
成功:功能(数据)
{$('#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>
Vos依赖:
这不会在浏览器上显示任何内容。
我不能使用通过在getAllExpense中加载视图来发送数据的方法,因为我已经在函数索引中加载了它。
有人能帮我吗?在控制器函数getAllExpense中,尝试使用标题而不是返回来回显json数据: 更改此项:
return json_encode($allExpenses);
致:
在控制器函数getAllExpense中,尝试使用标头而不是使用return来回显json数据: 更改此项:
return json_encode($allExpenses);
致:
网址:
向后看,我知道getAllExpense
是你的函数名,expenses
是你的控制器名。。。什么是/public/
数据:
当前您正在使用数据:'date='+date
。这是不正确的<代码>$。ajax需要一个对象作为数据
参数。使用数据:{date:date}
数据类型在哪里?
如果您希望从服务器接收json,请告诉$.ajax
,这样它就可以正确解析响应。使用:dataType:'json'
你的成功功能
对返回的数据调用console.log()
有助于调试。在回调内部使用:console.log(数据)代码>然后,打开您的web工具。如果您使用的是Chrome,则在触发AJAX请求时按ctrl+shift+j并检查控制台选项卡。如果您转到网络选项卡并单击最新的请求(在底部),您也可以查看HTTP响应
“最后是表单:”
你没有包括表格
隔离问题:
正如我所提到的,您最好使用Chrome的“网络”选项卡检查AJAX响应,但您也可以通过将功能临时更改为:
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);
}
并直接在URL栏中调用getAllExpense
。您将能够看到原始json,并确定它的格式是否符合您的要求 网址:
向后看,我知道getAllExpense
是你的函数名,expenses
是你的控制器名。。。什么是/public/
数据:
当前您正在使用数据:'date='+date
。这是不正确的<代码>$。ajax
需要一个对象作为数据
参数。使用数据:{date:date}
数据类型在哪里?
如果您希望从服务器接收json,请告诉$.ajax
,这样它就可以正确解析响应。使用:dataType:'json'
你的成功功能
对返回的数据调用console.log()
有助于调试。在回调内部使用:console.log(数据)代码>然后,打开您的web工具。如果您使用的是Chrome,则在触发AJAX请求时按ctrl+shift+j并检查控制台选项卡。如果您转到网络选项卡并单击最新的请求(在底部),您也可以查看HTTP响应
“最后是表单:”
你没有包括表格
隔离问题:
正如我所提到的,您最好使用Chrome的“网络”选项卡检查AJAX响应,但您也可以通过将功能临时更改为:
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);
}
并直接在URL栏中调用getAllExpense
。您将能够看到原始json,并确定它的格式是否符合您的要求 感谢您的回答,但是如何在视图中获得$allExpenses?您将无法通过JSON将php变量传递到视图中。您必须使用Javascript(可能还有jQuery)来填充从服务器返回的值。但我无法从服务器上获取值。这是我的问题。我该怎么做呢?在AJAX成功函数中,尝试警告数据。如果您进行了我提到的初始更改,您应该会看到data objectI used$中的信息。get可使用警报显示数据。但我想做的是在浏览器上显示这些数据(而不是使用警报窗口)。我不知道是否可以将此数据传递到我的searchExpense表单(如我的问题中所述)谢谢您的回答,但如何在视图中获得$allExpenses?您将无法通过JSON将php变量传递到视图中。您必须使用Javascript(可能还有jQuery)来填充从服务器返回的值。但我无法从服务器上获取值。这是我的问题。我该怎么做呢?在AJAX成功函数中,尝试警告数据。如果您进行了我提到的初始更改,您应该会看到data objectI used$中的信息。get可使用警报显示数据。但我想做的是在浏览器上显示这些数据(而不是使用警报窗口)。我不知道是否有可能将此数据传递到我的searchExpense表单(如我的问题中所述)谢谢您的回答,但我已经检查了$allExpense的格式,这与我想要的一样。我的问题在于观点。我需要将日期发布到服务器(getAllExpense函数)并检索此函数的结果。我尝试了ajax调用,但我只成功地发送了日期或重试