簡體   English   中英

與$ _POST格式相同的Ajax多維表單數據

[英]Ajax multidimensional form data in same format as $_POST

我有一個具有深層多維輸入的表單,如下所示:

<form id="theForm">
 <input type='text' name='one[two][three][]' />
 <input type='text' name='one[two][three][]' />
 <input type='text' name='four[five][six][seven]' />
 <input type='text' name='eight[nine][ten]' />
</form>

我試圖通過AJAX以與正常提交表單相同的格式發送值。 我的意思是,如果要單擊“提交”按鈕,則在PHP中,$ _ POST看起來像這樣。 這就是我要的:

array( 'one' => array( 'two' => array('three'=>array( [0] => "", [1] => "" ) ) ),
       'four' => array( 'five' => array ('six' => array( 'seven' => "" ) ) ),
       'eight' => array( 'nine' => array( 'ten' => "" ) ) )
     )

我實質上是在嘗試AJAX表單提交。 當我做

$("#theForm").serializeArray()

然后通過$.post()發送$ _POST,如下所示:

array( [0] => array( "name" => string "one[two][three][]",  value=>"")
       [1] => array( "name" => string "one[two][three][]",  value=>"")
       [2] => array( "name" => string "four[five][six][seven]",  value=>"")
       [3] => array( "name" => string "eight[nine][ten]",  value=>"")
     )

這對我沒有用。 我需要保留之前概述的多維結構。 我想我可以遍歷數組並切碎字符串以重新創建所需的內容,但這對我來說似乎是愚蠢的。 是實現此目標的jQuery友好方法嗎?

我已經閱讀了其他有關jQuery如何發送多維數組的文章,所以也許我需要問的問題是,如何提取表單數據並將其保存在多維數組中?

我的猜測是當您進行AJAX調用時:

data: {data: $("#theForm").serializeArray()}

不要這樣做,只需將data設置為serializeArray的值即可。

data: $("#theForm").serializeArray()

編輯 :您說您正在使用$.post ,我認為您正在這樣做:

$.post('/your/url', {data: $("#theForm").serializeArray()}, function(){});

為了使其正常工作,您需要采用以下方式:

$.post('/your/url', $("#theForm").serializeArray(), function(){});

接受的答案是完全正確的。 附帶說明一下,如果您需要將其他數據添加到發布數據數組中,則只需將其以{name: "", value: ""}的格式推送到數組中

就我而言,除了表單中所有輸入的值之外,我還想基於用戶單擊的按鈕添加一個值。 因此,您要做的就是:

var data = $("#myForm").serializeArray();
data.push({name: "btnVal", value="button_a"});

並確保您發布類似:

$.post("/some/url", data, function(){});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM