2009-11-24 43 views
3

乾草傢伙,我正在做一些工作,我有一大堆表單。似乎這些不是傳統的方式(即使用提交按鈕)「發佈」。我需要一種方法來收集點擊鏈接時所有表單數據的所有名稱和值(然後將document.location用於重定向)。Jquery獲取所有輸入值並創建一個數組(帶名稱)

我希望名稱保持不變,以便我可以使用簡單的PHP腳本來處理數據。

有什麼建議嗎?

回答

7

我可以建議Serialize Form to JSON

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name]) { 
      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 formArray = $("#myform").serializeObject(); 
0

您可以使用像我提交助手爲基地

function submit(form) { 
    var form = $(form); 
    $.ajax(
    { data: $.param(form.serializeArray()), 
     dataType:'script', 
     type:'post', 
     url: form.attr("action")}); 
} 

,而不是一個「serializeArray()」我會用「序列化()」和而不是使用AJAX你可以做張貼任何你想。

對不起,沒有更多的時間,但希望這個片段可以幫助你。

+0

我認爲$ .param和form.serializeArray()的組合是關鍵。不seralize :)。但我不確定。 – reto 2009-11-24 13:00:27

0

cletus的答案是efficency方面最好的一個。

然而,這另一個工作的解決方案,不依賴於JSON:

//this is my object I will fill my array with 
function myObject(name, value) 
{ 
    this.name = name; 
    this.value = value; 
} 

var arr = $.map(
    $('span'), function (item) { 
     var $item = $(item); //no need to $(item) 2 times 
     return new 
     myObject(
      $item.attr("name"),  //name field 
      $item.text()   //value field 
     ); 
    } 
); 

arr將是myObject陣列,它們中的每一個包含屬性namevalue屬性。

使用您的選擇器代替$('span')

1
$.fn.valuesArr = function() 
{ 
    var a = []; 
    jQuery.each(this, function(i, field){ 
     a.push($.trim(field.value)); 
    }); 
    return a; 
} 

用途:

var myArr = $('input', $parentJQelem).valuesArr(); 
0

,但是這一切功能在不投入工作女巫數組名。

例子 -

這是正確的提交後的形式,但在連載我得到

形式[類型[]:2

這是不正確 - 我需要 - 形式[型] []:2

相關問題