我一直在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();