2012-11-01 36 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 [[]]」不起作用。