无法使用jQuery自动完成功能在CodeIgniter中显示返回的json数据

时间:2012-12-26 22:16:36

标签: ajax json jquery-ui codeigniter jquery-ui-autocomplete

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

1 个答案:

答案 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请求并在控制台中检查响应。