Autor Zpráva
paelkos
Profil *
Ahoj,

snažím se udělat našeptávač k vyhledávání - použil jsem tento plugin: http://tomcoote.co.uk/code-bank/jquery-json-suggestsearch-box/
http://tomcoote.co.uk/wp-content/CodeBank/Demos/JSONSuggestBox/demo.html
Autor pluginu na muj dotaz bohužel neodpovídá, proto píšu sem.

anonymni funkce slouži pro získáni dat ze serveru - muj problem je, že funkce skončí a vrátí prázdný výsledek dříve, než se dokončí ajax request. Data taham z jineho serveru, takže používám jsonp, který nepodporuje synchronní request.

Napadá vás prosím někoho, jak tento problém řešit?
před return jsem zkoušel různým způsobem čekat ale nefunguje to.

Díky moc za jakékoliv nápady.
Zde je kod:

var result;
(‘input#input’).jsonSuggest(

function(text, wildCard, caseSensitive, notCharacter) {

var url = ‘http://mojeurl;

$.ajax({
cache: false,
url: url,
dataType: “jsonp”,
jsonp : “callback”,
success: function(data) {
result = data;
}
});

return result;

}, {ajaxResults:true});

Moderátor Chamurappi: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Chamurappi
Profil
Reaguji na paelkose:
používám jsonp, který nepodporuje synchronní request
Naštěstí pro uživatele. Kéž by ho nepodporoval ani AJAX…

Napadá vás prosím někoho, jak tento problém řešit?
Přizpůsobit se asynchronnímu chování. Zapomeň na return, musíš pracovat s callbacky.
paelkos
Profil *
Díky za odpověď.

Mohl bych poprosit ještě o upřesnění jakým způsobem v tomto případě použít callback?
Javascript není moje silná stránka :(

V dokumentaci k pluginu je tento příklad:

$('input#suggestBox4').jsonSuggest(
function(text, wildCard, caseSensitive, notCharacter) {
// From here you can put your own logic in to say what results show.
// For now I'm just going to return some dummy data.

return [
{text:'View'},
{text:'the'},
{text:'source'},
{text:'for'},
{text:'this'},
{text:'one'}
];
}, {ajaxResults:true});

Díky moc!
Chamurappi
Profil
Reaguji na paelkose:
Autor toho pluginu je čuně, nutí všechny, kdo chtějí dynamicky dotahovat data, k použití synchronních XMLHttpRequestů. Ve svých ukázkách schválně neukazuje, jak ajaxResults: true používat s AJAXem :-)

Zřejmě bych dokázal plugin opravit.
pavelkos
Profil *
Díky moc za rady.

Objevil jsem plugin přímo v jQuery UI
http://jqueryui.com/demos/autocomplete/
a ten už funguje jak má.

Díky!

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: