2016-10-26 56 views
0

我有一個表單域,看起來像這樣:js serialize()是否可以處理數組字段名?

<input name="cm[3]" value="0.0000"> 

我把它發佈到使用serializeData功能安全AJAX功能:

var formData = $(form).serialize(); 
console.log(formData); 
secureajax.securecall({ 
    url: '/ajax/quadrants/thresholds-write', 
    data: formData, 
    success: function(data) { 
    ... etc 

注意,我的數據轉儲到控制檯。如果我運行此代碼,然後立即在/ ajax /象限/閾值寫入頁面上轉儲$ _POST數組,我在控制檯上看到我的輸入值(序列化數據轉儲),但post變量始終顯示默認值,在這個CAS裏e,「0.0000」。

控制檯片段:

quad_token=b765def8e66df0d473148310175e8a6e&systemsId=12&selectedString=1&cm%5B3%5D=9999... 

轉儲在$ _ POST PHP:

Array 
(
    [systemsId] => 12 
    [selectedString] => 1 
    [cm] => Array 
     (
      [3] => 0.0000 
      [5] => 1.0000 
      [7] => 0.0000 

CM的默認值[3]爲0.0000,但是當我輸入這樣的東西作爲9999,我請參閱js,但它好像系統正在讀取值標記,而不是鍵入的值。或者,我在想數組表單字段名稱沒有處理,但是數組的格式怎麼樣都好,只是數值會搞砸了?

任何想法?

注意:secureajax是爲ajax調用提供CSRF功能的自定義函數。

+1

所以當你寫「serializeData函數」時,你的意思是'.serialize()',對不對?無論如何,首先要做的就是使用瀏覽器控制檯來查看secureajax代碼實際上正在放入傳出的HTTP請求中。 – Pointy

+2

是的,我們可能需要查看secureajax中的內容。它可能期望所有輸入都具有type =「」屬性。 – WEBjuju

+1

問題是,當頁面加載時你正在設置'formData'。您需要將該代碼放入用戶提交表單時運行的函數中,以便獲取輸入的更新值。 – Barmar

回答

0

我發現了這個問題。我有多個div,一次只顯示一個,數組變量沒有考慮多個表單,所以最後一個表單的變量覆蓋了它們。即使這是一個bozo錯誤,因爲其他人可能也這樣做。很容易忽視。

相關問題