0

我正在构建一个 Google 表单克隆,它将创建一个表单,然后将其存储在服务器中。表单生成器输出此 JSON.stringify 格式:

{"method":"post","action":"/test","html":[{"input_type":"input_text","caption":"What is your name?"},{"input_type":"radio","caption":"What is the name of your dog?","options":{"benny":"Benny","billy":"Billy","bobby":"Bobby"}}]}

我正在尝试将其发送到我的 App Engine 后端,如下所示:

$.ajax({
    type: "POST",
    url: save_url,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: json_string,
    success: function (e) {
        console.log(e);
    }
});

但是如何在我的服务器上“打开”这个 json 字符串,以便我可以将它插入到我的数据库中?

第一个问题:我应该使用self.request.body获取数据对象(json字符串),还是有更好的方法来获取它。现在我已经解码字符串以获得正确的格式。

def post(self):
    form_elements = json.loads(urllib.unquote_plus(self.request.body))
    self.write(form_elements)

第二个问题:使用json.loads解析json字符串,我得到这个错误:ValueError: No JSON object could be decoded为什么它不明白它是json?

4

1 回答 1

4

这就是我所做的,从工作代码中提取并剥离到基本位。

  var blob = JSON.stringify(stuff);
  $.ajax('/api/', {
    'type': 'POST',
    'async': false,
    'data': {
      'json': blob,
     },
     'dataType': 'json',
  }).done(function(data) {
    // ...
  }


def post(self):
    blob = self.request.get('json')
    try:
        stuff = json.loads(blob)
    except:
        # ...

我还没有尝试使用整个request.body.

于 2013-09-21T18:41:06.310 回答