IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze: Chyba v proměnné v AJAXu

Aktivity
Avatar
Petra D.
Člen
Avatar
Petra D. :9.11.2018 22:01

Ahoj všem, potřebuji pomoc ;)
V .NET mám formulář pro vyhledávání produktů, výsledky se zobrazují v DataTable pomocí AJAXu.
Můj problém je (pravděpodobně) v kódování při přiřazení proměnné s vyhledávacím textem do proměnné v URL AJAXU:

ajax: {
url: dataUrlSearch + "?FindProduct=" + "@FindProduct" + "&cp=" + Id,
dataSrc: '',
xhrFields: {
withCredentials: true
}

Když je v @FindProduct text který obsahuje háčky např. "čaj" tak vyhledávání a zobrazení funguje v pohodě. Ale ve chvíli kdy je ve vyhledávaném textu písmeno s čárkou např. "heřmánkový" tak mi AJAX vyhodí chybu:
DataTables warning:table id=datatab - Ajax error. For more information about this error, please see http://datatables.net/tn/7
Vtipné je, že když do URL v AJAXu definuji přímo hodnotu např. "?FindProduct=heř­mánkový" tak mi vyhledávání taky funguje... A když si vypíši hodnotu uloženou v @FindProduct tak je v ní samozřejmě "heřmánkový"
Už vůbec netuším co s tím, koukám do toho od rána a pořád nic...
Díky za každý nápad :)

Zkusil jsem: Zkoušela jsem encodeURI() a encodeURICompo­nent() přímo na URL v AJAXu, slepá ulička byla taky ošetření HttpUtility.Ur­lDecode() pro hodnotu předávanou pomocí Get před posláním do SQL dotazu...

Chci docílit: Ráda bych aby vyhledávání fungovalo pro jakýkoliv text ;)

Odpovědět
9.11.2018 22:01
Jaký si to uděláš, takový to máš...
Avatar
jozef_i
Člen
Avatar
jozef_i:10.11.2018 9:05

Čo je to @FindProduct, nejaká javascript premenná? Je to url dobre zapísané, majú tam byť úvodzovky okolo @FindProduct ?

 
Nahoru Odpovědět
10.11.2018 9:05
Avatar
Petra D.
Člen
Avatar
Petra D. :10.11.2018 9:59

@FindProduct je proměnná z C#, když to napíšu bez uvozovek, tak vyhledávání nefunguje vůbec... A ani nepomůže udělat toto (s uvozovkama i bez):

var product = "@FindProduct"
ajax: {
url: dataUrlSearch + "?FindProduct=" + product + "&cp=" + Id,
...
}

Nahoru Odpovědět
10.11.2018 9:59
Jaký si to uděláš, takový to máš...
Avatar
jozef_i
Člen
Avatar
jozef_i:10.11.2018 10:18

Pochopil som to, je to razor variable, takže to musí byť bez úvodzoviek, ak je to string. Kde priraďuješ hodnotu do FindProduct, asi nemá hodnotu... Ak je to z modelu, treba použiť @Model.FindProduct

Editováno 10.11.2018 10:21
 
Nahoru Odpovědět
10.11.2018 10:18
Avatar
Petra D.
Člen
Avatar
Petra D. :10.11.2018 10:24

Jo promiň, mám tam @Model.FindProduct, chyba při kopírování...
Divný je, že mi vyhledávání funguje, cokoliv to vyhledá... jen tam nesmí být písmeno s čárkou a tomu nerozumím...
A bez uvozovek nevyhledává vůbec...

Nahoru Odpovědět
10.11.2018 10:24
Jaký si to uděláš, takový to máš...
Avatar
jozef_i
Člen
Avatar
jozef_i:10.11.2018 12:34

No neviem encodeURI() by malo zabrať...:(
Ja som to skladal pre action najprv som urobil @Html.Raw(Url­.Action("")) a potom po priradení parametrov cez replace som urobil encodeURI(uri)....

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
10.11.2018 12:34
Avatar
Petra D.
Člen
Avatar
Petra D. :10.11.2018 22:10

samotné encodeURI() nepomohlo, vliv mělo až @Html.Raw
takže jsi mě zachránil, díky moc... máš to u mě ;)

Nahoru Odpovědět
10.11.2018 22:10
Jaký si to uděláš, takový to máš...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.