jQuery自动完成:没有得到任何结果。有任何想法吗?

时间:2011-02-01 22:17:08

标签: jquery autocomplete

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

<script>
$(document).ready(function(){

    $.ajax({
      type: "POST",
      url: "http://localhost:8888/index.php/welcome/get_client/",
      dataType: "json",
      data: "{}",
      success: function(data) {
          var datafromServer = data.split(",");
          ("#search_client").autocomplete({
              source: datafromServer
          });
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
         alert(textStatus);
      }
    });

});
</script>

上面是我的jQuery代码。我实际上从一个教程中得到它,但对于我的生活,我似乎无法让它工作,现在我想知道这是否是我的PHP的json结果。

我的PHP看起来像这样:

function get_client()
{
    $this->db->select('name')->from('clients');
    $query = $this->db->get();

    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json');
    echo json_encode($query->result());
}

当我回应它时,它看起来像这样:

[{"name":"Testing"},{"name":"Testing1"},{"name":"test11"},{"name":"test4"},{"name":"Testing21"},{"name":"Just Testing"},{"name":"testy"}]

我收到以下JavaScript错误:

TypeError: Result of expression 'data.split' [undefined] is not a function.

不确定该怎么做。

3 个答案:

答案 0 :(得分:1)

数据结果没有属性d,因此data.d.split(",");为空。 而是尝试:

$.ajax({
        type: "POST",
        url: "http://localhost:8888/index.php/welcome/get_client/",
        dataType: "json",
        data: "{}",
        success: function(data) {                
            ("#search_client").autocomplete({
                source: data
            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
           alert(textStatus);
        }
    });

编辑:实际上没有必要拆分数据....

答案 1 :(得分:0)

您可能也想检查您的响应的mime类型,它应该是text / json,或者我认为是application / json。

编辑我倾向于application / json,请参阅the right JSON content-type

答案 2 :(得分:0)

这一次,问题很简单:我把美元符号留下了:

("#search_client").autocomplete({