我正在尝试将一些 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 的帖子(因此上面有不同的输出方法),但似乎还没有解决这个问题。