2012-10-03 83 views
0

我有一個大表格拼接成4個div,每個div表示一個步驟,所有內容都只包含在1個表格中,我的問題是表格變得太大了,因爲有能力動態地添加新字段(圖片,文本,語言),jQuery提交大部分表格

所以我想知道是否有任何選項提交這個表格的部分,我的服務器有每個帖子20個字段的限制,我不能改變此設置

+3

您可以將它作爲JSON輸入發送到服務器嗎? –

+1

@Murali是的,這將是最好的解決方案,在jSon上序列化你的表單。 – Burimi

回答

1

如果服務器限制困擾你,你可以序列化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); 
}); 
+0

這是否會與「文件」輸入? –

0

爲什麼不創建多個表單,與每個步驟相關聯?

+0

,因爲我只是想點擊一個按鈕,並提交一切,多形式的形式,意味着倍數提交按鈕,雖然是可能的做一個按鈕,並提交每個與jquery –

+1

你可以json_encode所有的表單字段,所以你只能得到一個數據發佈:$('#your_form_id')。serialize() –

1

您可以隨時將字段值打包到一個大的json數組中,對其進行編碼並使用jQuery.ajax進行發佈。它看起來像一個大單場。在服務器端,你可以對它進行解碼,然後繞過限制。但說實話,那是什麼樣的服務器?我從來沒有聽說過這種限制。

另一種解決方案是在服務器端(例如,在會話存儲中)複製表單的狀態,並進行ajax調用來更新會話存儲中的各個字段。例如。當用戶離開字段時,您將該單個字段的值發佈到服務器,然後服務器更新會話存儲中的字段值。

可以有許多其他可能的解決方案。

0

@Cody答案作品不錯,但我有問題,文件輸入,

這個庫http://jquery.malsup.com/form/,工程太偉大了,我能提交的文件,並支持內陣列,沒有任何變化