2016-08-02 19 views
2

我已經創建了一個FormData對象並使用以下代碼行將元素附加到它。它適用於我,但我想知道是否有重構的方式來做到這一點。我該如何重構此代碼塊以將數據附加到對象

var form_data = new FormData(); 

//Append the data into the FormData object 
form_data.append('action', 'my_action'); 
form_data.append('username', $("[name=username]").val()); 
form_data.append('email', $("[name=email]").val()); 
form_data.append('first_name', $("[name=first_name]").val()); 
form_data.append('last_name', $("[name=last_name]").val()); 
form_data.append('website', $("[name=website]").val()); 
form_data.append('password', $("[name=password]").val()); 

我在ajax發送這個form_data。

$.ajax({ 
    url: register_data.admin_url, 
    type: 'POST', 
    data: form_data, 
    processData: false, 
    contentType: false, 
    success: function(response) { 
     alert('Got this from the server: ' + response); 
    } 
}); 

回答

2

假設要在請求中的form標籤內發送的所有形式輸入值,則可以通過向FormData構造提供form的參考簡化的代碼。試試這個:

$('#myForm').submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: register_data.admin_url, 
     type: 'POST', 
     data: new FormData(this), // < populates the FormData with all values in the form 
     processData: false, 
     contentType: false, 
     success: function(response) { 
      alert('Got this from the server: ' + response); 
     } 
    }); 
}); 
+0

我沒用過形式ta克在我的形式。 – Annapurna

+0

你真的應該是,爲UX和可訪問性的原因 –

+0

好吧,我會的。但有沒有辦法縮短代碼,如果我不使用表單標籤? – Annapurna

1

您只需通過形式的FormData構造函數retrieve data from HTML

HTML

<form name="foo"> 
    ... 
</form> 

JS

var form = document.forms.namedItem("foo"); 
form.addEventListener('submit', function(ev) { 
     var form_data = new FormData(form); 
} 
+0

我沒有在我的html中使用表單標籤。 – Annapurna

相關問題