2011-05-19 53 views
0

我有這個代碼工作,但硬編碼。如何複製表單數據?

$(document).ready(function(){ 
    $('form').live('submit', function(){ 

    var title  = this.elements.title.value; 
    var owner  = this.elements.owner.value; 
    var users  = this.elements.users.value; 
    var groups  = this.elements.groups.value; 
    var begin_date = this.elements.from.value; 
    var end_date = this.elements.to.value; 
    var anchor  = this.elements.anchor.value; 
    var type = $(this).find('input:radio[name="ctype"]:checked').val() || ''; 

    var aform  = $('form[name="create_form"]'); 

我需要aform來進行嵌套的Ajax調用。

問題

如何構建aform所以它不是硬編碼?頁面上有很多表單。

它應該包含

var title  = this.elements.title.value; 
    var owner  = this.elements.owner.value; 
    var users  = this.elements.users.value; 
    var groups  = this.elements.groups.value; 
    var begin_date = this.elements.from.value; 
    var end_date = this.elements.to.value; 
    var anchor  = this.elements.anchor.value; 
    var type = $(this).find('input:radio[name="ctype"]:checked').val() || ''; 

,並應與嵌套Ajax調用以後的工作。

$.ajax({ 
    type: "GET", 
    url: "/cgi-bin/ajax.pl", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    data: aform.serialize(), 
+0

要求我不明白你的要求。喲意味着什麼「構造'aform'」? – RoToRa 2011-05-19 12:23:04

+0

@RoToRa:'aform'現在包含'name =「create_form」'形式的表單信息。這是我使用'this'收集的相同信息。如何將許多'element'提取包裝到可以與'data:aform.serialize(),'使用的對象中? – 2011-05-19 12:29:22

+1

我還是不明白。如果'$('form [name =「create_form」]')'和$(this)'相同',你不使用它?也許你正在尋找'.serializeArray()'? – RoToRa 2011-05-19 12:55:17

回答

1
var aform = $(this); 

(由桑德拉:-)

1

你不需要自己做這一切。 Jquery本身有一個form plugin,它通過ajax提交表單。這是自我解釋。

+0

這可以通過表單名稱而不是表單ID來完成嗎?表單ID是自動生成的,我之前不知道。但我知道表單名稱。 – 2011-05-19 12:57:53

1

下面是將某些表單元素轉換爲JSON對象的簡單示例 - 儘管如果您只想以JSON格式發送數據,Abdul Kader的建議會更好。

<form method="post" action="" id="example"> 
    <p><label>Name<br><input type="text" name="name" value="Bob"></p> 
    <p><label>Happy<br><input type="checkbox" name="happy" checked></p> 
    <p><textarea name="information">Some text "data" here!</textarea> 
</form> 
<div id="exampleOutput"> 

</div> 
<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 

    function exampleFormData() { 
     var formData; 
     var jsonString = "({"; 
     var jsonCount = 0; 

     // This will add each input to a JSON string 
     $("#example input, #example textarea").each(function() { 
      if (jsonCount > 0) { 
       jsonString += ", " 
      } 
      var key = this.name; 
      var value = this.value; 
      jsonString += key + ': "' + value.replace(/"/g, '\\"') + '"'; 
      jsonCount++; 
     }); 
     jsonString += "})" 

     // This converts the string into a JSON object 
     formData = eval(jsonString); 

     // Now you can use the formData JSON object... 
     $("#exampleOutput").html(formData.name + " " + formData.happy + " " + formData.information); 
    } 

    exampleFormData(); 
</script> 
+0

和'.serializeArray()'不一樣,只有更多的不安全? – RoToRa 2011-05-19 12:56:11

+0

在我的情況下'aform'只是一個JSON字符串?我可以使用JSON的編碼功能來創建它嗎? – 2011-05-19 13:00:04