2012-11-01 22 views
0

当我使用.on('click')事件创建一个新按钮时,我有类似的代码工作,但我需要使用表单附带的按钮。我已经添加了这些行初始化:AJAX表单不提交Javascript数组

var options = 
     { 
      data: 
      { 
        "create": _this.toBeCreated, 
        "update": _this.toBeUpdated, 
        "destroy": _this.toBeDeleted 
      }, 
      dataType: 'script', 
      type: 'PUT', 
      url: 'custom_statuses/modify_statuses' 
     }; 

     $(_this.delegator.$target.find(".UIForm")[0]).ajaxForm(options); 

这码半的作品,因为如果我插上硬编码到数据,我让他们在AJAX调用返回。

但是,当我尝试使用这些Javascript数组(我确认它不是空的)时,只有最后一个元素通过AJAX被推出。

例如:

toBeDeleted = [1,5,9,7]; 

应返回:

"delete": [1,5,9,7] 

实际上返回:

"delete": "7" 

我不知道什么是错做,但同样,这些代码与工作.on(点击)以前附加到按钮上。它看起来类似:

$.ajax({ 
      type: 'PUT', 
      url: 'custom_statuses/modify_statuses', 
      dataType: 'script', 
      data: 
      { 
       "create": _this.toBeCreated, 
       "update": _this.toBeUpdated, 
       "destroy": _this.toBeDeleted 
      } 
     }); 
+0

我有一个类似的问题,使用JavaScript数组。如果你不隐式需要一个数组,我使用toSting()方法得到了很好的结果。 – Dan

+0

您是否检查过XMLHttpRequest以确定它是否实际使用了PUT请求,因为您没有经常看到这些请求,尽管它们都受支持(在大多数浏览器中),但ajaxform插件可以将其定义为POST或GET内部? – adeneo

+0

@ErmSo如果使用.toString(),则输出变为“”,而不是数组的最后一个元素X_X – Derek

回答

0

找到了答案。我需要在数据块中包括括号:

"create[]": _this.toBeCreated, 
"update[]": _this.toBeUpdated, 
"destroy[]": _this.toBeDeleted 

虽然我不知道如何指示数组数组。更新是一个数组数组。 “update [[]]”不起作用。