我有一個大表格拼接成4個div,每個div表示一個步驟,所有內容都只包含在1個表格中,我的問題是表格變得太大了,因爲有能力動態地添加新字段(圖片,文本,語言),jQuery提交大部分表格
所以我想知道是否有任何選項提交這個表格的部分,我的服務器有每個帖子20個字段的限制,我不能改變此設置
我有一個大表格拼接成4個div,每個div表示一個步驟,所有內容都只包含在1個表格中,我的問題是表格變得太大了,因爲有能力動態地添加新字段(圖片,文本,語言),jQuery提交大部分表格
所以我想知道是否有任何選項提交這個表格的部分,我的服務器有每個帖子20個字段的限制,我不能改變此設置
如果服務器限制困擾你,你可以序列化JSON形式,並通過這個作爲一個參數
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
像
var data = $("form#myform").serializeObject();
window.location = "url?data="+encodeURIComponent(data);
比服務器
$data = json_decode($_GET["data"]);
foreach($data as $row)
{
//Do What ever you want with $row
}
或者如果您需要使用$ _POST
var post_data = { data : data};
$.post('url', post_data ,function(data) {
console.log(data);
});
這是否會與「文件」輸入? –
爲什麼不創建多個表單,與每個步驟相關聯?
,因爲我只是想點擊一個按鈕,並提交一切,多形式的形式,意味着倍數提交按鈕,雖然是可能的做一個按鈕,並提交每個與jquery –
你可以json_encode所有的表單字段,所以你只能得到一個數據發佈:$('#your_form_id')。serialize() –
您可以隨時將字段值打包到一個大的json數組中,對其進行編碼並使用jQuery.ajax進行發佈。它看起來像一個大單場。在服務器端,你可以對它進行解碼,然後繞過限制。但說實話,那是什麼樣的服務器?我從來沒有聽說過這種限制。
另一種解決方案是在服務器端(例如,在會話存儲中)複製表單的狀態,並進行ajax調用來更新會話存儲中的各個字段。例如。當用戶離開字段時,您將該單個字段的值發佈到服務器,然後服務器更新會話存儲中的字段值。
可以有許多其他可能的解決方案。
@Cody答案作品不錯,但我有問題,文件輸入,
這個庫http://jquery.malsup.com/form/,工程太偉大了,我能提交的文件,並支持內陣列,沒有任何變化
您可以將它作爲JSON輸入發送到服務器嗎? –
@Murali是的,這將是最好的解決方案,在jSon上序列化你的表單。 – Burimi