Python 如何在Google App Engine上通过jQuery.ajax接收JSON

Python 如何在Google App Engine上通过jQuery.ajax接收JSON,python,json,google-app-engine,jquery,Python,Json,Google App Engine,Jquery,我正在构建一个谷歌表单克隆,它将创建一个表单,然后将其存储在服务器中。表单生成器输出此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":"Benn

我正在构建一个谷歌表单克隆,它将创建一个表单,然后将其存储在服务器中。表单生成器输出此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"}}]}
我正在尝试将其发送到我的应用程序引擎后端,如下所示:

$.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:没有json对象可以被解码
为什么它不理解它是json?

下面是我做的,从工作代码中提取并剥离到基本位

  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

以下是我所做的,从工作代码中提取并精简到基本的部分

  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

请看这个问题:如果我理解正确,这个问题的首要答案是使用json库并使用json.loads函数,但正如我在问题中提到的,这就是我已经在使用的东西。您可以显示生成javascript变量json_字符串的代码吗?你试过记录self.request.body的样子吗?我怀疑您实际上没有发送json字符串。@dragonx您是对的,我已经将输入console.log的内容字符串化了,但没有将发送到ajax函数的内容字符串化;)但是,self.request.body是获取数据的最佳方式吗?是的self.request.body看到这个问题:如果我理解正确,这个问题的首要答案是使用json库和json.loads函数,但正如我在问题中提到的,这就是我已经在使用的东西。你能展示一下生成javascript变量json_字符串的代码吗?你试过记录self.request.body的样子吗?我怀疑您实际上没有发送json字符串。@dragonx您是对的,我已经将输入console.log的内容字符串化了,但没有将发送到ajax函数的内容字符串化;)不过,self.request.body是获取数据的最佳方式吗?是的,self.request.body