ajax调用中错误的javascript数组序列化

ajax调用中错误的javascript数组序列化,javascript,jquery,ajax,arrays,stripes,Javascript,Jquery,Ajax,Arrays,Stripes,我想在ajax调用中传递javascript对象数组 我这样制作阵列: var itemsToEdit = []; $(".editedItem[value='true']").closest("tr").each(function() { var itemToEdit = { id: $(this).find(".idInput").val(), name: $(this).find(".nameInput").val(),

我想在ajax调用中传递javascript对象数组

我这样制作阵列:

   var itemsToEdit = [];
   $(".editedItem[value='true']").closest("tr").each(function() {
      var itemToEdit = {
         id: $(this).find(".idInput").val(),
         name: $(this).find(".nameInput").val(),
         code: $(this).find(".codeInput").val()
      }; // Represents SomeClass java class with fields: id, name, code
      itemsToEdit.push(itemToEdit);
   });
然后执行ajax调用:

   $.ajax({
      url: "MyActionBean.action?saveChanges",
      type: "Post",
      dataType: "json",
      data: itemsToEdit,
      success: function( data ) {
         alert("Oh, no");
      }
   });
问题是:在服务器端,我收到的是映射列表,而不是SomeClass对象列表。 我检查了浏览器发送的内容,它是:

itemsToEdit[0][id]:4
itemsToEdit[0][name]:Florida
itemsToEdit[0][code]:FL
itemsToEdit[1][id]:3
itemsToEdit[1][name]:California
itemsToEdit[1][code]:CA
但我显然想要这个,因为我相信这是对SomeClass列表的正确映射:

itemsToEdit[0].id:4
itemsToEdit[0].name:Florida
itemsToEdit[0].code:FL
itemsToEdit[1].id:3
itemsToEdit[1].name:California
itemsToEdit[1].code:CA
我错在哪里

理解上下文可能并不重要:我使用Stripes框架,它将请求中的参数映射到被调用的ActionBean字段


谢谢大家!

我可以看到一些东西可能会脱落条纹

虽然您现在发送的任何内容都不会引起问题,但您应该对所传递的数据使用JSON.stringify

AJAX调用通常发送JSON对象,而不是数组

尝试按如下方式发送和接收阵列:

$.ajax({
    url: "MyActionBean.action?saveChanges",
    type: "Post",
    dataType: "json",
    data: {
        'items': JSON.stringify(itemsToEdit)
    },
    success: function( data ) {
       alert("Oh, no");
    }
});

另一方面,检索接收对象的items属性,并分析该属性而不是整个对象。

itemsToEdit[0][id]:4和itemsToEdit[0]。id:4 UM,它们的含义完全相同。括号和点符号。好的。但Stripes框架并不这么认为:因为第一个变体由Stripes映射到:private List itemsToEdit;第二个变量为:private List itemsToEdit;如果将数组传递给data:,jQuery将很难实现预期的功能。你检查过你的发帖请求的实际内容了吗?是的。我在问题中详细说明了这一点。这是我的帖子请求的实际内容:itemsToEdit[0][id]:4。。。更重要的是,Stripes框架将其映射到列表中。我在服务器端接收它。在jQueryAjax文档中,他们说您可以通过arrays@gs_vlad,你找到这个问题的解决方案了吗?,我也遇到了同样的问题。