2012-08-02 197 views
0

當下面的代碼執行攔截默認行爲,參數出現在URL,並且表內的變化沒有內在的HTML。該文檔說默認的請求方法是提供數據時的POST。表單提交

$('form').submit(function() { 
    var data = $(this).serializeArray(); 
    $('#items-table').load("drawer.php", data) 
}); 

data被正確地輸出作爲MM=01&dd=01&yyyy=2001&HH=12&mm=00&ss=00&entername=Dr.+Clock&optionsRadios=option3&enteritemid=,但它顯示爲參數到當前頁面,而不是在負載()函數,drawer.php標識的頁面。

編輯:即使我使用serializeArray(),以確保一個對象作爲加載(第二個參數傳遞),而不是一個字符串,我還發現一個GET請求被調用,當前頁面的URL漲勢這些參數。 「drawer.php」的響應不會出現在div中。

SECOND EDIT:事實證明,我沒有攔截表單的動作,因爲我沒有在提交函數的末尾包含這一行:return false;

+3

$數據或數據? – 2012-08-02 23:34:34

+0

你是從哪裏讀到的。我無法找到的文檔中:http://api.jquery.com/load-event/ – Nope 2012-08-02 23:34:37

+1

@弗朗索瓦·瓦爾:錯誤的頁面,看看這裏http://api.jquery.com/load/ – 2012-08-02 23:37:03

回答

1

我未能攔截形式的行動,因爲我沒有加入這一行:return false;在提交功能的結束。包括這條線解決了這個問題。

0

如果數據被作爲一個對象提供使用POST方法;否則,假設爲 GET。

$('#items-table').load("drawer.php", {form_data:data}) 

所以傳遞一個object/{},而不是string因爲serialize()方法創建& delimated文本字符串,你也用過$data代替data

0

您正在使用var data = $(this).serialize();

的醫生說:

的.serialize()方法創建標準的URL編碼符號的文本字符串。

http://api.jquery.com/serialize/

您需要提供一個對象作爲負載使用POST的第二個參數。