我正在尝试将一些AJAX代码从独立文件移动到我的控制器中的一个函数中,并且似乎无法在视图中的自动完成功能中显示JSON数据。我已经通过直接访问函数URL验证了该函数确实返回了JSON编码数据。
以下是我的观点中的JavaScript:
<script type="text/javascript">
$(document).ready(function(){
var ac_config = {
source: <?php echo base_url() . 'admin/lookup_tmdb_movie_titles'; ?>
select: function(event, ui){
$("#title").val(ui.item.title);
$("#year").val(ui.item.year);
$("#imdb_link").val(ui.item.imdb_link);
},
minLength:2,
position: {
my: "left top",
at: "left bottom",
collision: "none",
of: "#title.ui-autocomplete-input.ui-autocomplete-loading"
}
};
$("#title").autocomplete(ac_config);
});
</script>
这是管理控制器中的功能(我只是使用硬编码的测试数据,直到我正常工作):
function lookup_tmdb_movie_titles()
{
$term = 'test';
// TEST DATA
$title['title'] = 'test';
$title['label'] = 'test (2012)';
$title['value'] = 'test';
$title['year'] = '2012';
$title['imdb_link'] = 'testlink';
$matches[] = $title;
// convert into JSON format and output
$matches = array_slice($matches, 0, 5);
$this->output->set_output( json_encode($matches) );
}
我也尝试过以下两种方式输出JSON,如果我直接通过URL访问该函数,所有这些方法都可以工作,但这些方法都不适用于视图本身。
print json_encode($matches);
和
$data['json'] = json_encode($matches);
$this->load->view('admin/json_view', $data);
我在StackOverflow和Google上看了很多帖子(因此上面的输出方法不同),但似乎没有什么能解决这个问题。
答案 0 :(得分:0)
首先你应该试试这个:
source: "<?php echo site_url(admin/lookup_tmdb_movie_titles); ?>"
那么这可能是:
function lookup_tmdb_movie_titles()
{
$term = 'test';
// TEST DATA
$title['title'] = 'test';
$title['label'] = 'test (2012)';
$title['value'] = 'test';
$title['year'] = '2012';
$title['imdb_link'] = 'testlink';
$matches[] = $title;
// convert into JSON format and output
$matches = array_slice($matches, 0, 5);
var_dump($matches); //comment this if everythings ok
// echo json_encode($matches); ->uncomment this if everythings ok
}
然后打开firebug启动ajax请求并在控制台中检查响应。