我有一個帶有輸入欄位的表單,用戶可以在其中介紹資料。我使用 Ajax 發送它,我希望每個欄位都發送到concat.一個值。所以如果用戶引入測驗。可見的結果應該是www.google.com/test. 這是我的代碼:
<form>
<input type="text" id="test" name="test">
</form>
阿賈克斯
$(document).ready(function() {
if ($("#formid").length) {
$("#formid").submit(function(event) {
var form = $(this);
var url = form.attr('action');
$.ajax({
type: "POST",
url: url,
data: form.serialize(),
//success...
當我這樣做時...data: form.serialize() '&test=' testtest,,它只會為id test. 我該怎么做?
uj5u.com熱心網友回復:
如果您確定您的用戶使用現代瀏覽器,您可以使用 FormData API 修改內容,然后使用 URLSearchParams API 對其進行序列化,例如:
let formData = new FormData(document.getElementById('formid'));
for (let key of formData.keys()) {
formData.set(key, 'http://' formData.get(key))
}
var url = form.attr('action');
$.ajax({
type: "POST",
url: url,
data: new URLSearchParams(formData).toString()
});
編輯:匹配鍵串列但不是所有鍵的示例:
let formData = new FormData(document.getElementById('formid'));
let specialKeys = ['specialKey1', 'specialKey2'];
for (let key of formData.keys()) {
if(specialKeys.includes(key)) formData.set(key, 'http://' formData.get(key))
}
var url = form.attr('action');
$.ajax({
type: "POST",
url: url,
data: new URLSearchParams(formData).toString()
});
編輯:要處理表單中重復鍵的情況,我們不能明確使用.getand.set方法,而是應該將資料附加到新的表單資料中,例如:
let formData = new FormData(document.getElementById('formid'));
let specialKeys = ['specialKey1', 'specialKey2'];
let modifiedFormData = new FormData();
for (let [key, value] of formData.entries()) {
if(specialKeys.includes(key)) {
modifiedFormData.append( key, 'http://' value )
}else{
modifiedFormData.append( key, value )
}
}
let newDataAsString = new URLSearchParams(modifiedFormData).toString();
var url = form.attr('action');
$.ajax({
type: "POST",
url: url,
data: newDataAsString,
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/454965.html
標籤:javascript jQuery json 阿贾克斯 序列化
