Chci geek triko! Chci geek triko!
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

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

C# .NET .NET (C# a Visual Basic) Zpracování dat poslné pře json ajax American English version English version

Aktivity (3)
Avatar
tomas
Člen
Avatar
tomas:24. srpna 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. srpna 16:17
Avatar
don.jarducius:24. srpna 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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 24. srpna 21:03
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27. srpna 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. srpna 9:01
 
Nahoru Odpovědět  -1 27. srpna 9:00
Avatar
tomas
Člen
Avatar
tomas:27. srpna 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. srpna 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.