CodeIgniter Ajax响应包含数据,但未定义输出


CodeIgniter Ajax response contains data but output is undefined

我一直在CodeIgniter项目上工作,并且遇到了使用ajax从我的控制器返回数据的问题。

控制器:

function outputAjax()
    {
        $this->load->model('my_model');
        $data['results'] = $this->site_model->getInfo();
        $this->output->set_output(json_encode($data));
    }

模型:

function getInfo()
{
    $this->db->order_by('PubDate','DESC');
    $query = $this->db->get('Articles', 50);
        return $query->result();
}

View中的Ajax函数:

<div id="article-area">
    <p>Hey this is where the ajax call should output!</p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" language="Javascript">
 jQuery(document).ready(function(){     
      $.ajax({
url: 'http://localhost/project/index.php/my_controller/outputAjax',
dataType:'json',
success: function(data) {
    $.each(data, function(index,item){
        $("#article-area").append('<div><b>' + item.id + '</b></div><hr />');
    });
}
      });
});

我可以使用PHP foreach循环输出数据,但现在我正试图将其转换为使用ajax。如果我是正确的,输出的数据是对象的数组。每个"对象"包含6个左右的数据字段,例如:id, title, url, PubDate, Source.

我是相当新的使用ajax的任何东西,但在我试图调试问题,使用Chrome检查和检查'网络',我可以看到ajax调用,并在响应选项卡:我需要的所有数据在这里以这种方式显示:

{"results":[{"id":"1","Source":"My Source","Title":"My Title". . . .

由于数据显示在响应中,但页面上没有显示任何内容,或者如果我更改ajax调用,我可以将其输出为UNDEFINED。

我希望实现的最终结果是页面上大约有10个左右的div,其中包含来自ajax调用的数据。这也引出了我的附带问题…

我的模型从数据库返回50行数据。我目前正在传递所有的json格式的ajax函数。我最初将只使用该数据的10行,然后在确定的时间内使用该页上的其余行。最初继续将所有50行输出到ajax调用,然后根据需要使用它,还是将数据限制为最初将从模型中使用的数据?

我已经通过一些ajax教程与CI但是,他们都在使用POST,我还没有找到一个是在文档上运行的。准备好和没有用户交互。我还注意到必须有几种不同的方式来输出数据。我曾见过以这种方式使用。append() .after()和。value(),但似乎没有一个适合我的特殊情况…

谢谢你的帮助!

如果您的数据只是一个数组,那么您的代码就可以工作。但是,您的数据数组包含在results中,这是对象的属性。

each改为:

$.each(data.results, function(index,item){...

或者直接发送数组而不放入php results数组

$data = $this->site_model->getInfo();