【问题标题】:pass an array of objects in sling servlet在 sling servlet 中传递对象数组
【发布时间】:2013-12-05 15:37:23
【问题描述】:

我有一个对象数组。

var mydata1 = {};
var mydata2={};
mydata1.name="john";
mydata2.class="third";
mydata2.name="pan";
mydata3.class="second";
var dataArray= new Array();
dataArray[0]=mydata1;
dataArray[1]=mydata2;

in ajax call
  jQuery.ajax({
        url: '/myservlet',
        type: 'POST',
        data: dataArray,
        async: false,
        success: function(result) {
            alert("Saved Node.")
        },
        failure:function(result) {
            alert("Not Saved")
        }
    });

因为对象中的值是动态的,所以需要制作对象。并且将来会发生变化。如何通过ajax传递这种对象。 我们可以换成JSON吗?但也需要在 servlet 中进行迭代。 提前致谢。

【问题讨论】:

    标签: java jquery servlets aem


    【解决方案1】:

    对数据数组使用JSON.stringify()函数将其序列化为JSON格式:

    jQuery.ajax({
        url: '/myservlet',
        type: 'POST',
        data: JSON.stringify(dataArray),
        ...
    

    然后您可以使用JSONArray 读取servlet 中的JSON:

    String requestData = request.getReader().readLine();
    JSONArray array = new JSONArray(requestData);
    // to get name property of the first object:
    array.getJSONObject(0).getString("name");
    

    创建的 JSON 将只是一行文本,因此我们不需要从请求阅读器中读取更多行。

    【讨论】:

    • 我在使用 JSONArray 库时收到错误 405,有什么方法可以配置或绕过它?
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 2021-05-30
    • 2011-05-07
    • 2014-06-03
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多