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调用,但我只成功地发送了日期或重试