2013-02-26 13 views
13

Mam struktury danych tak:Jak przesłać strukturę danych, np. Json do kolby?

enter image description here

Ja staram się wysłać go do serwera przez $ .ajax:

$.ajax({ 
    type: 'POST', 
    data: post_obj, //this is my json data 
    dataType: 'json', 
    url: '', 
    success: function(e){ 
     console.log(e); 
    } 
}); 

i chcę dostać go w serwerze przez kolby: title = request.form['title'] działa dobrze!

Ale jak uzyskać content?

request.form.getlist('content') nie działa.

to dane pocztowe w Firebug:

enter image description here

dziękuję: D

+0

Jak o 'content = Request.Form [ 'content' ] '? :) – favoretti

+0

@favoretti nie może działać: 'BadValueException: Zła wartość dla pola typu" treść ". Powód: "Wartość nie jest instancją łańcucha znaków (dostał: list) "' – Robin

+0

Ok, a co zwróci 'request.form.getlist ('content')? Nieco więcej szczegółów na temat "nie jest pracą" może pomóc. Nie ma tu przydatnej kolby do testowania niestety. – favoretti

Odpowiedz

16

Wysyłasz dane zakodowane jako ciąg zapytania zamiast JSON. Kolba może przetwarzać zakodowane dane JSON, więc lepiej przesłać ją w ten sposób. Oto, co trzeba zrobić po stronie klienta:

$.ajax({ 
    type: 'POST', 
    // Provide correct Content-Type, so that Flask will know how to process it. 
    contentType: 'application/json', 
    // Encode your data as JSON. 
    data: JSON.stringify(post_obj), 
    // This is the type of data you're expecting back from the server. 
    dataType: 'json', 
    url: '/some/url', 
    success: function (e) { 
     console.log(e); 
    } 
}); 

na danych po stronie serwera jest dostępna za pośrednictwem request.json (już dekodowane):

content = request.json['content'] 
+0

Świetnie! dzięki :) – Robin

2

Jeśli skontrolować POST składany przez jQuery, najprawdopodobniej zobaczyć, że content jest rzeczywiście przeszedł jako content[]. Aby uzyskać do niego dostęp z obiektu Flask, należy go użyć request.form.getlist('content[]').

Jeśli wolisz, aby był przekazywany jako content, możesz dodać traditional: true do swojego połączenia .

Więcej informacji na ten temat można znaleźć w sekcji "Dane" i "Tradycyjne" http://api.jquery.com/jQuery.ajax/.

+0

dziękuję za odpowiedź. – Robin

+0

po ustawieniu 'tradycyjna: prawda' na $ .ajax. Otrzymałem ciąg znaków podobny do '[Object Object]' na serwerze ... ale to nie jest to, czego chcę :( – Robin

+0

Różne technologie po stronie serwera obsługują to inaczej.Możesz chcieć sprawdzić odpowiedź na temat JSON dostarczoną przez Audrius – dirn

Powiązane problemy