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

使用jquery将javascript对象传递给jsp页面,javascript,jquery,ajax,jsp,Javascript,Jquery,Ajax,Jsp,我有javascript语言 var data=newobject() 此对象的某些属性包括: 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

我有javascript语言

var data=newobject()

此对象的某些属性包括:

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中,我说

objectobjparam=request.getParameter(“obj”)
out.println(objParam.name)

这似乎不起作用。请帮忙

  • 因为您要发布到JSP,所以请确保在
    doPost(请求、响应)
    方法中进行处理
  • 通常,传递的所有数据都应为JSON格式。在你的情况下,它应该是

    data: {'obj' : data}
    
  • 要在服务器端进行分析,请使用库:

    jsonobjectobj=(JSONObject)JSONValue.parse(request.getParameter(“obj”);
    迭代器keys=obj.keys();
    //迭代JSON对象的属性
    while(keys.hasNext()){
    字符串键=(字符串)键。下一步();
    if(对象获取(键)JSONObject实例){
    //JSONObject中的JSONObject
    }否则{
    //过程
    }
    }
    
    见文件:


  • javascript的对象不同于java的对象。两者根本不具有可比性。这里是按原样发送javascript对象。这应该更改为json字符串

    data:  'obj='+ JSON.stringify(data),
    
    在服务器上,您还应该获取json字符串,然后使用一些机制(如
    ObjectMapper

    Object objParam = request.getParameter("obj");
    
    ObjectMapper om = new ObjectMapper();
    om.readValue(objParam.toString(), ...);
    
    您可以在客户端传递json数据(使用json.stringify()将javascript对象转换为json数据)。在服务端,使用Gson libarry可以将json数据映射到java对象

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

    {"userName":"test_username"}
    
    现在,您可以使用GSON库将json数据映射到java对象

    例如,请参考下面的链接


    我更改了数据传递到JSon的方式,但我不知道dopost的代码语法。是的,但我将通过jquery传递一个带有属性的javascript对象,然后传递到jsp。我希望jsp解析对象并返回各个属性。我该怎么做?我刚刚编辑了我的答案,以包括如何在服务器端进行处理。如果您找到了一个有效的答案,请通过将其标记为正确的方式让社区知道。这里给出的答案不起作用,它们过于复杂,我只是一个noobie。那么我该如何在jsp中解析javascript对象呢?我希望属性如上图所示。println(obj.name);ObjectMapper类提供了readValue函数,可用于转换。请参见本教程
    {"userName":"test_username"}