2013-07-20 33 views
1

所以我有一個AJAX發佈JSON給Django,在我看來,它是在request.body中拾取的。 Request.body看起來像這樣:json POST的Django驗證失敗,除非jQuery.ajaxSettings.traditional = true;

{"c": {"cellid": 5}, "b": {"cellid": 8}, "e": {"cellid": 3}, "i": {"cellid": 9}, "k": {"cellid": 11}, "j": {"cellid": 10}, "l": {"cellid": 12}, "n": {"cellid": 7}, "q": {"cellid": 1}, "r": {"cellid": 4}, "w": {"cellid": 2}, "v": {"cellid": 6}} 

我想借此進入了驗證和清洗工藝JSON對象,但是,當我嘗試:

json.loads(request.body) 
ValueError: No JSON object could be decoded 

和SimpleJSON說:

simplejson.loads(request.body) 
JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

關於發生了什麼問題的任何指針?當我JSON皮棉上面這是有效的,那麼解碼有什麼問題?

有趣的是,從this question,看起來這是jQuery的的錯,因爲

jQuery.ajaxSettings.traditional = true; 

在JavaScript固定的問題。我不確定爲什麼會出現這種情況,有什麼想法?

回答

0

views.py

from django.template.loader import render_to_string 
from django.utils import simplejson 
if form.is_valid(): 
template = "my_template.html" 
html = render_to_string(template,{"c": {"cellid": 5}, "b": {"cellid": 8}, "e": {"cellid": 3}, "i": {"cellid": 9}, "k": {"cellid": 11}, "j": {"cellid": 10}, "l": {"cellid": 12}, "n": {"cellid": 7}, "q": {"cellid": 1}, "r": {"cellid": 4}, "w": {"cellid": 2}, "v": {"cellid": 6}}) 
response = simplejson.dumps({'success':'True','html':html}) 

try it, it should work.