2015-07-01 48 views
5

我試圖將項目添加到JavaScript中的數組,然後序列化數組。但是,它似乎並沒有工作。添加項目到一個數組,然後序列化()javascript

請看下面的代碼,我做錯了什麼?

var currentParent = $(this).closest('tr'); 
var items = $("input,select", currentParent); 
items["_token"] = $('input[name=_token]').val(); 
var strData = items.serialize(); 
+0

'items'不是一個數組,它是一個jQuery對象。只是堅持它的屬性,可能不會做你認爲它會。 – Yoshi

+0

也許https://api.jquery.com/jQuery.makeArray/ – mplungjan

回答

-1

試試下面的javscript代碼片段。我還沒有試過,但我認爲它可能工作:

var currentParent = $(this).closest('tr'); 
var items = $(currentParent).find("input, select"); 
items["_token"] = $('input[name=_token]').val(); 
var strData = items.serialize(); 

請參見下面的小提琴鏈接: https://jsfiddle.net/nanncngr/

+0

謝謝,我只是試過這個,但如果我做'alert(strData);'我可以看到_token仍然沒有添加到數組中。 – V4n1ll4

+0

我認爲它應該工作。如果「_token」鍵沒有形成,請嘗試使用javascript push功能添加「_token」鍵。 –

+0

我剛剛嘗試過'items.push([{_ token:$('input [name = _token]')。val()}]);'但仍然沒有運氣 – V4n1ll4

2

方法serialize需要被應用到整個窗體,而不是在陣列的具體項目,如果你想要序列已有對象或數組,你需要使用param代替

http://api.jquery.com/jquery.param/

爲例:

<form action=""> 
    <input class="token" name="token" value="someValue" /> 
    <input class="someData" name="someData" /> 
</form> 

<script> 
    alert($('form').serialize()) // should show you someData=&token=someValue 
</script> 

https://jsfiddle.net/4cxa36vp/

......或者......

var options = { 
    token : $('input.token').val(), 
    someData : null 
} 

alert($.param(options)) // should give you the same 

https://jsfiddle.net/0ec8axot/

此外,請確保您的表單字段具有屬性name

Serialize form not working in jQuery

+0

感謝您的「......或...」部分Andy,我花了一些時間試圖找出爲什麼我不能'.serialize()'一個簡單的數組。 [jQuery'.serialize()'docs](https://api.jquery.com/serialize/)甚至沒有引用['$ .param()'](https://api.jquery.com/jQuery。帕拉姆/),一會兒我就瘋了。 – CPHPython

相關問題