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í.

Diskuze: Zpracování dat poslné pře json ajax

Aktivity
Avatar
tomas
Člen
Avatar
tomas:24.8.2018 16:17

Ahojte,

na straně klienta vytvořím v jquery tabulku o předem neznámém počtu řádků a pak chci poslat přes ajax na server všechny řádky tabulky, kde je dál zpracuji. Níže uvádím jaké data posílám.

{"devId":10,"state":"ok","note":""}{"devId":13,"state":"ok","note":"note"}

Nějak nevím jak to uchopit a jak ty data na straně serveru zpracovat. Na straně serveru mě běží následující web service.

[Serializable]
public class DeviceReturnList
{
        public int devId { get; set; }
        public string state { get; set; }
        public string note { get; set; }
}

[WebMethod]
public string SetDeviceReturn(List<DeviceReturnList> data)
{
        kod
}

Pokud upravím service SetDeviceReturn tak, že tam přidám tři proměnné co se posílají a pošlu jen jeden řádek, tak mě to přijde a dá se to zpracovat. Ale pokud mám v tabulce víc řádků a pošlu je současně(viz příklad posílaných dat) tak nevím jak to příjmout. Server mě neustále odmítá. Poslední chyba co mě to v tomto případě hlásí je "Invalid JSON primitive: data."

Dokážu přijat jeden řádek, ale jak přijat více řádků současně? Napadlo mě to posílat po jedné, ale to by nebylo zrovna nejlepší. Strýček mě moc nepomohl, všude jsou jen návody jak načítat data ze serveru, to znamená opačně :-(

Tomáš

Chci docílit: Můj cíl je poslat ze strany klienta hodnoty z tabulky o více řádcích na server jedním JSON voláním, kde potřebuji zpracovat jeden řádek po druhém a zapsat do DB.

 
Odpovědět
24.8.2018 16:17
Avatar
don.jarducius:24.8.2018 21:03

Ahoj,
je potřeba poslat pole (list) jménem data jak definuješ v fci SetDeviceReturn.
Tzn.

{"data":[{"devId":10,"state":"ok","note":""},{"devId":13,"state":"ok","note":"note"}]}
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
24.8.2018 21:03
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27.8.2018 9:00

Strejcka se musis umet spravne zeptat.
google = json format data table example

Pripadne bych tam dal
google = json format documentation

Tvuj program nema vestavene funkce pro prevod do jsonu? Php pouziva napr json_encode, php.net/json_en­code.
vstup: mixed = associativni pole
vystup: string
pr pole

$arr1 = [1, 2, 3, 4] // norm. pole
$arr2 = ["aa"=>1, "bb"=>2, 3, 4] // as. pole
$arr3 = [ [1,2,3], [4,5,6], [7,8,9]] // tabulka, norm. 2d pole

json_encode z toho udela tohle, nejspis

$str3 = json_encode($arr3) =  [ ["1","2","3"], ["4","5","6"], ["7","8","9"]]

Kdyz to napises takhle, tak ti to samozrejme dekoder nedokaze zpracovat, minimalne by to muselo byt, viz dalsi ko

{"devId":10,"state":"ok","note":""}{"devId":13,"state":"ok","note":"note"}
[{"devId":10,"state":"ok","note":""},{"devId":13,"state":"ok","note":"note"}]

A pokud to nepujde, tak viz don.jarducius. Ale spoustu potizi by sis usetril, pokud by sis nasel tu prevodni funkci.

Prohlizec, firefox, pouziva pro kodovani, dekodovani JSON.parse() JSON.stringify(), pokud bys potreboval
https://developer.mozilla.org/…s/JSON/parse

Editováno 27.8.2018 9:01
 
Nahoru Odpovědět
27.8.2018 9:00
Avatar
tomas
Člen
Avatar
tomas:27.8.2018 13:15

Díky za nakopnutí. nakonec jsem ten řetězec musel ještě trochu upravit a už mě to prošlo.

"{\"data\":[{\"devId\":10,\"state\":\"ok\",\"note\":\"\"},{\"devId\":13,\"state\":\"ok\",\"note\":\"note\"}]}"
 
Nahoru Odpovědět
27.8.2018 13:15
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 4 zpráv z 4.