Загрузка данных JSON для автозаполнения JQuery - PullRequest
0 голосов
/ 01 октября 2011

Я пытаюсь использовать автозаполнение jqueryui для загрузки служб из базы данных mysql в моей форме, но ничего не происходит ?? пожалуйста, помогите мне или скажите, где я не прав мой HTML

<input type="text" id="actual_service" />

мой скрипт javascript

$("#actual_service").autocomplete({
source: "http://dev_svr/medportal/search.php?callback=?",
dataType: "jsonp",
 minLength: 1
});

это search.php

$con = mysql_connect('localhost', 'dev', '');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("medrep", $con);

$term = trim(strip_tags($_GET['term']));

$qstring = "select  prod_id id,prod_name value FROM product where prod_type='SERVICE' and prod_name LIKE '%".$term."%' ORDER BY prod_name;";
$result = mysql_query($qstring);
while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
        $row['value']=htmlentities(stripslashes($row['value']));
        $row['id']=(int)$row['id'];
        $row_set[] = $row;
}
header("Content-type: application/json");
echo json_encode($row_set);

когда я загружаю эту страницу, в этом поле ввода ничего не происходит, когда я что-либо печатаю.

это пример вывода http://dev_svr/medportal/search.php?term=ct, когда я ограничиваю sql 3 строками

[{"id":50,"value":"ABDOMEN SUPINE&amp;ERECT(2VIEWS)"},{"id":142,"value":"CT BRAIN"},{"id":115,"value":"CT CERVICAL SPINE"}]

1 Ответ

0 голосов
/ 01 октября 2011

1. Ваш код jQuery неверен

Вы не получаете данные из удаленного домена, поэтому вам не нужен запрос JSONP. Должно быть:

$("#actual_service").autocomplete({
    source: "http://dev_svr/medportal/search.php",
    minLength: 1
});

2. Ваш объект JSON неверен.

Каждый объект json для автозаполнения должен иметь два значения: label и value (без ID). Если вы хотите, чтобы идентификатор продукта был значением выбранного элемента, а имя продукта было текстом, который отображается пользователю, тогда объект json должен выглядеть следующим образом:

[{"value":50,"label":"ABDOMEN SUPINE&amp;ERECT(2VIEWS)"},{"value":142,"label":"CT BRAIN"},{"value":115,"label":"CT CERVICAL SPINE"}]

Редактировать

Из того, что вы упомянули в комментариях, попробуйте этот код jQuery:

$('#actual_service').autocomplete({
    source: function( request, response ) {
        $.ajax({
            url: 'http://dev_svr/medportal/search.php',
            dataType: 'jsonp',
            data: { term: request.term },
            success: function( data ) {
                    response( data );
            }
        });
    },
    minLength: 1
});
...