2009-09-30 78 views
0

我在我的頁面上有一張數據表。這些列是「開始」,「結束」,「評論」和「選項」。在選項欄中有一個用於刪除行的按鈕,以及一個可以編輯表格的行的按鈕。這允許改變「開始」,「結束」和「評論」的值。再次單擊它可以完成編輯過程。最後,還有一種方法可以在表中添加另一行。所有這些按預期工作。

我想在創建的陣列列於表中的數據的底部,看起來像這樣添加一個按鈕(表示爲JSON純粹是爲了便於示出,以SO:不是必需的):

[ 
    { 
     "start"  :"2009/08/01", 
     "end"  :"2009/08/08", 
     "comment" :"an example date.", 
    }, 
    { 
     "start"  :"2009/07/01", 
     "end"  :"2009/07/08", 
     "comment" :"another example date, a month earlier.", 
    }, 
    { 
     "start"  :"2000/07/01", 
     "end"  :"2000/07/08", 
     "comment" :"another example date, a year earlier. You get the idea.", 
    } 
] 

我不應該在構建數組時遇到太多的麻煩,但是一旦我有了,我該如何將它發佈到後端php腳本(然後使用put_csv()將數據寫入文件)?理想情況下,它將以數組格式存在於服務器端,以允許驗證。

如果需要,我很高興使用jquery。

回答

1

你它是如何端到服務器取決於你想要什麼archieve做。如果你想加載一個新的頁面,它將處理數據,你可以使用隱藏輸入的通常形式。或者,如果您想要通過AJAX處理背景,請使用jQuery.ajax,如CRasco所述。無論使用哪種方式,都需要將結構化數組轉換爲簡單的鍵/值列表。

一種選擇是生成一個JSON文檔(我不認爲jQuery爲此提供了一個函數,但是您可以輕鬆地找到某些內容)並在序列化文檔中使用單個字段。然後在服務器端,您將使用json_decode來恢復陣列。如果您正在使用AJAX方法,jQuery.ajax呼叫數據選項將包括:

{ 
    'data': '[{"start":"2009/08/01","end":"2009/08/08","comment":"an example date."},...' 
} 

一個更好的方法是將其序列化到在PHP本身理解的格式字段的列表。這意味着你不得不做任何特殊的事情,並且$_POST['data']將包含該數組。例如:

{ 
    'data[0][start]': '2009/08/01', 
    'data[0][end]': '2009/08/08', 
    'data[0][comment]': 'an example date.', 
    'data[1][start]': '2009/07/01', 
    'data[1][end]': '2009/07/08', 
    'data[1][comment]': 'another example date, a month earlier.', 
    ... 
} 

如果您使用的是形式方法,你需要生成像輸入字段:

<input type="hidden" name="data[0][start]" value="2009/08/01" /> 
+0

我不知道聯想(或多維)陣列可以通過PHP進行傳遞。我怎麼能在JavaScript中構造所述數組? – Eric 2009-10-04 19:43:36

0

我肯定會使用jQuery。這是$ .post()函數的頁面。

http://docs.jquery.com/Ajax/jQuery.post

一個需要注意的是,$。員額()可以被簡化,免去了您設置回調什麼,但一個成功的崗位能力$阿賈克斯()函數的包裝。對於通過AJAX重要的交易,我會用這樣的:

http://docs.jquery.com/Ajax/jQuery.ajax

一個例子是:

$.ajax({ 
     url: "script.php", 
     global: false, 
     type: "POST", 
     data: ({id : this.getAttribute('id')}), 
     dataType: "html", 
     success: function(msg){ 
     alert(msg); 
     } 
    }); 
相關問題