【问题标题】:pass a javascript object to a jsp page using jquery使用 jquery 将 javascript 对象传递给 jsp 页面
【发布时间】:2013-01-10 03:12:12
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery ajax jsp


    【解决方案1】:
    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

    【讨论】:

    • 我更改了将数据传递给 JSon 的方式,但我不知道 dopost 的代码语法。
    • 是的,但我通过 jquery 传递一个带有属性的 javascript 对象,然后传递给 jsp。我希望 jsp 剖析对象并返回各个属性。我该怎么做?
    • 我刚刚编辑了我的答案,包括如何在服务器端进行处理。
    • 如果您找到有效的答案,请将其标记为正确让社区知道。
    • 这里给出的答案不起作用,它们过于复杂,我只是个菜鸟
    【解决方案2】:

    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(), ...);
    

    【讨论】:

    【解决方案3】:

    您可以在客户端传递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

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 2014-06-21
      • 2019-02-20
      • 1970-01-01
      相关资源
      最近更新 更多