【发布时间】:2013-04-01 21:03:03
【问题描述】:
我需要将 JSON 对象从网页发布到 GAE Python
网站
$('#save').click(function() {
x = JSON.stringify(result);
$.post("/save_leads", x)
.done(function() {})
.fail(function() { alert("error"); })
});
字符串化 JSON 对象的片段
[{"adrese":"Slokas 161, Rīga, LV-1067","nosaukums":"\"Akropolis\", apbedīšanas birojs","web":"www.akropoliss.lv","talrunis":"80005580","save":true},{"adrese":"Katlakalna 11c, Rīga, LV-1073","nosaukums":"DB Schenker Loģistikas Parks un Kravu Pasaule","web":"www.dbschenker.lv","talrunis":"67800087","save":true}]
蟒蛇
def save_leads(self):
results = self.request.get('x')
logging.info(len(results)) #logs as 0 :S
到目前为止,我只使用 html 发布表单的内容,所以我不知道我是在发布还是发现错误。
P.S.:我更喜欢允许我在 Python 端使用 json.loads() 的答案
【问题讨论】:
-
我的猜测是,如果您想通过键 x.. 获取它,您应该将它作为数据对象传递
$.post("/save_leads", {x:x}).. 或者您甚至可能不需要对其进行字符串化,只需执行 @ 987654326@ -
字符串化版本
$.post("/save_leads", {x:x})工作!非字符串化版本的len(x)记录为 0。这让我想知道$.post("/save_leads", {x:result})是否真的也有效,而len()对 JSON 对象不起作用......必须检查一下! -
result = json.load(self.request.get('x'))结果为AttributeError: 'str' object has no attribute 'read'。因此,要么我错误地将 JSON 提供给 Python,要么我必须始终进行字符串化。无论如何 - 字符串化版本有效,这解决了我现在的问题。谢谢! -
PS:从表单提交的数据看起来像
{input_name1:value, input_name2:value} -
哦,是的,除非您将数据类型指定为
json,否则您需要对其进行字符串化,因为它会自动为您进行字符串化。以下是更改数据类型的方法。 api.jquery.com/jQuery.post/#example-6