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

时间:2013-01-26 04:42:53

标签: javascript jquery ajax jsp

我有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);

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

并且在服务器上你应该获取json字符串,然后使用ObjectMapper

等一些机制将json转换为java对象
Object objParam = request.getParameter("obj");

ObjectMapper om = new ObjectMapper();
om.readValue(objParam.toString(), ...);

答案 2 :(得分: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对象。

例如plz参考以下链接

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