JQuery autocomplete + asp web service + json.

JQuery autocomplete + asp web service + json.
2010-04-06T23:21:54+02:00
2010-04-11T10:26:35+02:00
2022-11-17T09:30:41+01:00
Diebold
Hali!

Egy olyan problémám lenne, hogy sehogy sem tudom beüzemelni a jQuery-s autocomplete-et.
Illetve nem lenne bonyolult a használata, hogyha nem adatbázisból kéne keresni.:S

Na szóval odáig megvagyok, hogy megírtam a JSON.asmx-et:
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string[] GetAuthors(string request) { .... return authorList.ToArray(); }

És sikeresen meg is hívom ezt js-ből a köv módon:


var cache = {}; function onFocus(id) { $("#" + id).autocomplete({ source: function(request, response) { if (cache.term == request.term && cache.content) { response(cache.content); } if (new RegExp(cache.term).test(request.term) && cache.content && cache.content.length < 13) { var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); response($.grep(cache.content, function(value) { return matcher.test(value.value) })); } var json = "{ request: '" + request.term + "' }"; $.ajax({ type: "POST", url: "/JSON.asmx/GetAuthors", contentType: "application/json; charset=utf-8", data: json, dataType: "json", success: function(datas) { cache.term = request.term; cache.content = datas; response(datas); }, error: ajaxError, failure: ajaxFailure }); }, minLength: 2, autoFill: true, max: 10 }); }

Szóval a $.ajax visszaadja a megfelelő elemeket, de valamiért nem működik mégse:S

Ha nem a source-ban hanem oldal betöltődéskor hívok egy $.ajax-os lekérdezést és azt tömbként source-nak átadom akkor megy mint a karikacsapás, de így nem.

Viszont az adatbázis felduzzadhat elég nagyméretűre és jobb lenne ez ha így menne.

Vagy ha ez nem oldódik meg akkor elfogadok valami más ötletet. Pl. hogy lehetne asszinkron letölteni az adatokat, hogy az oldal futásában ne legyen túl nagy fennakadás.


Ennyi lenne.
Sürgősen kéne valami ötlet.
Előre is köszike mindenkinek aki segítségemre siet.
És remélem érthető voltam.

Üdv,
diebold
Mutasd a teljes hozzászólást!
Na megoldottam!

Annyi volt a probléma, hogy az ajaxos lekérdezéssel visszakapott adatot rosszul adtam tovább, azaz a "success:" ágban a módosítások után ez lesz a kód:

... success: function(datas) { cache.term = request.term; cache.content = datas.d; response(datas.d); }, ...


Nem tudom mennyire érdekel bárkit is a megoldás, de hátha lesz olyan aki bele fut hasonló problémába.:)

üdv,
Diebold
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd