[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ответ от сервера методом AJAX
segazav
Всем привет!

Пытаюсь настроить автозаполнения поля поиска на сайте, ну типа как в google.
Нашел неплохой плагин автозаполнение jquery ui и пытаюсь в нем разобраться.

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

<script>
$(function() {
$( "#tags" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://gd.geobytes.com/AutoCompleteCity",
dataType: "jsonp",
data: {
q: request.term
},
success: function( data ) {
response( data );
}
}
);
},
minLength: 3,
});
});
</
script>


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


data: {
q: request.term
}


Для пробы поставил свой url, но не могу понять:
Какой должен быть файл-обработчик и что конкретно он должен отдавать и в каком виде?
Пробовал всяко но не получается, как поставлю url: "http://gd.geobytes.com/AutoCompleteCity" все работает.
Но мне нужно в файле обработчике выдавать свои слова из базы данных - это я знаю как сделать, но в каком виде должен выдать данные оператор echo не понимаю.

Пробовал так,
<?php
.......выборка из базы...........
echo '{"data": "ВАЗ 2110"}';
?>
не работает...[/js][js][/js][js]
kaww
segazav, Почему бы просто не посмотреть в каком формате отвечает сервер? Если делаешь запрос на свой хост, то jsonp тебе не нужен.
В любом случае должен отдавать массив в виде json строки. Remote datasource:
["foo", "bar", "baz"]

Для Remote JSONP datasource он должен быть обернут в вызов функции, имя которой передается в запросе (что такое jsonp ответит гугл):
jQuery11020022918589878827333_1441762663282(["foo", "bar", "baz"]);
, где
jQuery11020022918589878827333_1441762663282 - параметр callback в запросе
segazav
Если в ответе сервера несколько значений данных одной переменной $data, то как передавать?
echo '{"data": "'.$data.'"}';

Так не работает:
echo '{"data": "'.$data.'","'.$data1.'"}';
AllesKlar
echo json_encode($data);


_____________
[продано копирайтерам]
segazav
Так тоже не работает!? Не понимаю ПОЧЕМУ????

Вот сама функция:

<script>
$(function() {
var cache = {};
$( "#tags" ).autocomplete({
minLength: 2,
source: function( request, response ) {
var term = request.term;
if ( term in cache ) {
response( cache[ term ] );
return;
}

$.getJSON( "poisk_slova.php", request, function( data ) {
cache[ term ] = data;
response( data );
});
}
}
);
});
</
script>


А вот файл poisk_slova.php:

<?php
if (isset($_GET['term']))
{
$term = $_GET['term'];
$term = iconv ('utf-8', 'windows-1251', $term);
$result666 = mysql_query ("SELECT `slova_poisk` FROM `poisk_slova` WHERE `slova_poisk` LIKE '".$term."%'");
$myrow666 = mysql_fetch_array ($result666);
$data = $myrow666["slova_poisk"];
echo json_encode($data);
}
?>


Так работает, но только если с одним словом или одной строкой в списке подсказок:
<?php
if (isset($_GET['term']))
{
$term = $_GET['term'];
$term = iconv ('utf-8', 'windows-1251', $term);
$result666 = mysql_query ("SELECT `slova_poisk` FROM `poisk_slova` WHERE `slova_poisk` LIKE '".$term."%'");
$myrow666 = mysql_fetch_array ($result666);
$data = $myrow666["slova_poisk"];
echo '{"data": "'.$data.'"}';
}
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.