Автозаполнение JQuery: не получая никаких результатов. Есть идеи? - PullRequest
0 голосов
/ 02 февраля 2011
<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.Я на самом деле получил его из учебника, но, судя по всему, я не могу заставить его работать, и теперь мне интересно, является ли это моим результатом json из PHP.

Мой 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 ]

1 голос
/ 02 февраля 2011

Результат данных не имеет свойства 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);
        }
    });

РЕДАКТИРОВАТЬ: на самом деле нет необходимости разбивать данные ....

0 голосов
/ 03 февраля 2011

Все это время проблема была проста: я оставил знак доллара таким:

("#search_client").autocomplete({
0 голосов
/ 02 февраля 2011

Возможно, вы также захотите проверить mime-тип вашего ответа, это должен быть текст / json или application / json.

Редактировать Я склоняюсь к application / json, см. правильный тип содержимого JSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...