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