【问题标题】:Python catch jQuery .post()Python 捕捉 jQuery .post()
【发布时间】: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

标签: jquery python json .post


【解决方案1】:

所以总结一下。正确答案是:

网络

$('#save').click(function() {
    y = JSON.stringify(result);
    console.log(result)
    $.post("/save_leads", {x:y})
    .done(function() {})
    .fail(function() { alert("error"); })
});

服务器端

def save_leads(self):
    result = self.request.get('x')
    result = json.loads(result)

如果我能找到一个有这样答案的帖子,我会问的。所以我希望这可以帮助其他jQuery -> post(JSON) -> Python newbs:)

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 2012-06-27
    • 2023-04-04
    • 2011-12-06
    • 1970-01-01
    • 2013-05-20
    • 2016-09-26
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多