2

我已经成功完成了 jQuery post。但是,为了获取从服务器端返回的数据。谁能举例说明如何使用 webapp 框架在 Google App Engine (Python) 中完成此操作?

如果可能的话,我需要例子:

  1. 我们如何将 json 数据发送到模板。
  2. 从模板中,我们如何访问 jQuery 发布成功函数后的 json。
  3. 如果有人可以将其发布到http://jsfiddle.net,我将不胜感激
4

3 回答 3

3

首先了解json模块。本机 json 模块无法在 appengine 上运行,所以也可以

import django.utils.simplejson as json

然后,将您的“json”对象格式化为 Python dicts,

obj = {"name": "foo", "age": 20}

然后使用 json.dumps 获取一个 str 对象,它代表 JSON 对象。

json_obj = json.dumps(obj)

这里,json_obj是一个字符串,因此您可以使用常规方法编写它。(在交互式解释器中尝试)

之后阅读此页面以获取有关 webapp 框架中模板的信息(我使用 Django,我不确定 webapp 是否使用相同的模板系统 - 虽然它看起来很相似,所以最好阅读一下)

如果您在谈论 jQuery AJAX POST,则必须在服务器端生成 (X)HTML/XML/whatever,当然,除非您导致一些 post-POST URL 被加载到框架。

如果那不能回答您想要的,请稍微澄清您的问题。IMO 不太可能有人将带有代码的答案发布到 jsfiddle。

于 2011-11-13T19:02:24.917 回答
2

JSON 变得简单:

  1. data_json = []创建一个空数组
  2. data_json.append({ 'data1': first-item, 'data2': second-item, ...})- 根据需要附加尽可能多的数据
  3. output = json.dumps(data_json)创建 json 输出
  4. self.response.out.write(output)

为避免跨域问题,您需要使用回调函数填充输出(称为 JSON/P)。padded_output = callback_fn + "(" + output + ")"其中 callback_fn 是用户发送的回调函数(通常由 jQuery 生成)。

于 2011-11-15T04:35:59.940 回答
1

我实际上是在寻找如何将 Json 对象从服务器端取回到我编写的 jQuery ajax 帖子的答案。所以,在这里我发现了我之前的解决方案出了什么问题:

因此,解决方案很简单:

$.post("POST_URL", $("#form").serialize(),
        function(data){
             alert(data); //data returned from server side
        }, "json");

所以,我犯了两个错误:

  1. 所以,早些时候最后一个参数“json”被放弃了。
  2. 将 django.utils.simplejson 导入为 json 后,我犯了一个愚蠢的粗心错误,我使用 simplejson.dumps 而不是 json.dumps。(基本上,错误的变量)
于 2011-11-15T15:17:09.850 回答