2

我有 javascript

var data = new Object();

这个对象的一些属性是:

data.name = "mike";
data.id = 1;

我使用 jquery 将对象传递给 jsp 页面

var request = $.ajax
({
 url: "test.jsp",
 type: "post",
 data:  'obj='+ data,
success:    function(msg) {
     $('#response').html(msg);},
  error:function (xhr, ajaxOptions, thrownError){
 alert(xhr.status);
 alert(thrownError);
}  
});

在jsp中我说

Object objParam = request.getParameter("obj"); out.println(objParam.name);

这似乎不起作用。请帮忙。

4

3 回答 3

2
  1. 因为您要发布到 JSP,所以请确保您在方法内部进行doPost(request, response)处理。
  2. 一般来说,所有传递的数据都应该是 JSON 格式。在你的情况下,它应该是

    data: {'obj' : data}
    
  3. 要在服务器端解析,请使用org.json库:

        JSONObject obj = (JSONObject) JSONValue.parse(request.getParameter("obj"));
        Iterator<?> keys = obj.keys();            
        //iterate over the properties of the JSON object
        while( keys.hasNext() ){
            String key = (String)keys.next();
            if( obj.get(key) instanceof JSONObject ){
                //a JSONObject inside the JSONObject
            } else {
                //process
            }
        }
    

    请参阅文档:JSONObject

于 2013-01-26T05:16:53.703 回答
0

您可以在客户端传递 json 数据(使用 json.stringify() 转换为 json 数据的 javascript 对象)。在服务端,使用 Gson Libarary 您可以将 json 数据映射到 java 对象。

    public class User{
private String userName;
//getters
//setters
    }

json格式

{"userName":"test_username"}

现在您可以使用 GSON 库将 json 数据映射到 java 对象。

例如请参考以下链接

https://sites.google.com/site/gson/gson-user-guide

于 2013-03-26T10:42:53.907 回答
0

javascript的对象与java的对象不同。两者根本没有可比性。在这里,您按原样发送 javascript 对象。这应该更改为 json 字符串。

data:  'obj='+ JSON.stringify(data),

而且在服务器上,您应该获取 json 字符串,然后使用一些机制将该 json 转换为 java 对象,例如ObjectMapper

Object objParam = request.getParameter("obj");

ObjectMapper om = new ObjectMapper();
om.readValue(objParam.toString(), ...);
于 2013-01-26T06:59:22.380 回答