【发布时间】:2012-02-21 11:03:14
【问题描述】:
我正在使用 $.ajax 函数将 json 数据发送到服务器端函数。
var jsonObjects = [{id:1, name:"amit"}, {id:2, name:"ankit"},{id:3,name:"atin"},{id:1, name:"puneet"}];
$.ajax({
url: "{{=URL('myControllerName')}}",
type: "POST",
context: document.body,
data: {students: JSON.stringify(jsonObjects) },
dataType: "json",
success: function(){
alert('ok');
}
});
在服务端函数中,我如何访问数据?
有人给出了 grails 的代码:---
//this code is written in grails
import grails.converters.JSON;
List<JSON> students = JSON.parse(params.students) //students in request params is parsed to json objects and stored in the List
println "Student id: " + students[0].studentId //first element of the students list is accessed as a map holding a key studentId
我想在 python web 框架中执行此操作,即。 web2py。
尝试以 params.students 和 request.students 的形式访问它,但没有成功。
访问发送的数据的正确语法是什么? (我检查了 jQuery API,但找不到相同的)。
谢谢,
维内特
【问题讨论】:
-
Python 2.6 有一个
json模块,可用于解析 JSON(参见 How to decode JSON with Python)。至于 web2py 如何处理请求,请查看其文档。 -
我导入了json模块并尝试解析数据。没有 JSON 错误。但是由于数据分配不正确而引发错误(在params.students中,未定义params)。
-
这就是为什么我说您必须阅读有关 web2py 的内容,它们如何使请求数据可用。您不能只复制和粘贴其他语言的代码。显然 web2py 不提供
params变量。我很确定这已经被一些教程所涵盖。 -
在 web2py 中,对于像 www.myshineyurl.com/1/2 这样的 url,我们将其解析为 request.args(0) 和 request.args(1) 分别给出值 1 和 2。对于内置函数,即。 ajax(),我们作为 request.vars.htmlElementName 访问它。但是没有任何从 $.ajax 函数访问数据的信息。这就是我在这里发布问题的原因。
-
这是一个 POST 请求。是否通过 Ajax 发送都没有关系。了解如何从 POST 请求中访问数据。