2010-09-12 54 views
3

当我通过Ajax将JSON字符串发布到Django时,它会将其转换为无效的JSON格式。特别是,如果我看着萤火虫后的数据我送:Django/python正在将我的发布数据从JavaScript转换为

info {'mid':1,'sid':27,'name':'aa','desc':'Enter info' } 

然而,当我访问它的Django的请求,我看到:

u'{\'mid\':1,\'sid\':27,\'name\':\'aa\',\'desc\':\'Enter Info\'} 

当我试着使用JSON解析这个使用无效的JSON消息加载它。

我张贴有:

data.info = "{'mid':1,'sid':27,'name':'aa','desc':'Enter info' }"; 
    $.ajax({url: cmdAjaxAddress, 
      type: "POST", 
      data: data, 
      success: function(txt) { 
       result = txt; 
      }, 
      async: false }); 

我读了POST在Django这样的:

if request.is_ajax() and request.method == 'POST': 
    infoJson = request.POST['info'] 
    info = json.loads(infoJson); 

任何帮助,将不胜感激。

+0

什么是您收到确切的错误消息? – 2010-09-13 01:34:47

回答

7

你是如何编码你的JSON字符串?单引号需要双引号,按照spec

In [40]: s1 = "{'mid':1,'sid':27,'name':'aa','desc':'Enter info' }" 

In [41]: simplejson.loads(s1) 
JSONDecodeError: Expecting property name: line 1 column 1 (char 1) 

In [42]: s2 = '{"mid":1,"sid":27,"name":"aa","desc":"Enter info" }' 

In [43]: simplejson.loads(s2) 
Out[43]: {'desc': 'Enter info', 'mid': 1, 'name': 'aa', 'sid': 27} 
+1

如果OP首先使用'simplejson.dumps()'创建了他的JSON,则这会自动发生。 – 2010-09-12 08:08:01