2012-07-16 66 views
0

所以我的php需要2個值,operation => stringdata => array。以下是形式(動態生成的輸入):發送表單數組值trought ajax

<form method="post" action="/operations.php"> 
     Title: <input type="text" value="valuehere" name="data[title]"> 
        . 
        . 
        . 
     Description: <textarea name="data[description]"></textarea><br> 

     <button class="btn janitor_edit" type="submit">Edit Media</button> 

        <input type="hidden" value="operateMePls" name="operation"> 
     <input type="hidden" value="254" name="data[id]"> 
</form> 

現在我要創建從表單中的所有data[xyz]一個數組,但我無法找到一個方法來做到這一點。最近我做的是這樣做的:link

我必須存儲數組作爲鍵/值,沒有其他方式,所以我可以ajax_request = { operation: operation_input, data : input_array_data };

哦,並且表單在提交「正常」POST後會按預期工作。

回答

3

如果表單作品本身,然後讓jQuery的需要converting the data into a form suitable for XHR照顧它。

data: $('#your_form').serialize(); 
+0

如果我POST這個字符串,我該如何將它重新轉換爲PHP端的數組/對象?我必須手動解析它嗎? – solidau 2012-07-16 19:42:41

+0

@ Juventus18 - 你看看'$ _POST',就像你正常提交表單一樣。序列化的要點是它使用標準格式,所以你不需要使用自定義分析器。 – Quentin 2012-07-16 19:43:59

+0

是的,這個工程。愚蠢的我,即使我「測試」了這一點,我不知道爲什麼我認爲它不會工作... – localhost 2012-07-16 19:45:08

1

我已經使用了一個對象而不是一個數組。當你在PHP中使用json_decode時,傳遞「true」作爲第二個參數,數據將以數組形式出現。我認爲這是你想要的。請評論,如果你正在尋找不同的東西。

$(".janitor_edit").click(function() { 
    var data = {}; 
    data.operation = $("input[name='operation']").val(); 
    data.data.id = $("input[name='data\\[id\\]']").val(); 
    data.data.title = $("input[name='data\\[title\\]']").val(); 
    data.data.description = $("input[name='data\\[description\\]']").val(); 
}); 
+0

我忘了提,形式動態產生的輸入,所以沒有告訴什麼將是每一個輸入的名字。 – localhost 2012-07-16 19:17:17

+0

這是一個很好的答案,但命名鍵陣列像數組['鍵']工作正常在JS – Onheiron 2012-07-16 19:20:47

+0

不知道如果可以幫助,但我做了這個jQuery插件來處理動態生成的形式,認爲正確的方式將使用.serialize ,它可能會有所幫助。 http://codereview.stackexchange.com/questions/13443/jquery-plugin-node-tojson-convert-html-form-to-js-object#comment22176_13443 – Onheiron 2012-07-16 19:28:32