连接 Ajax 序列化数据
Concatenate Ajax serialized data
我有一个带有输入字段的表单,用户可以在其中输入数据。我使用 Ajax 发送它,我希望每个字段都向 concat.
发送一个值。所以如果用户引入测试。可见的结果应该
是 www.google.com/test
。
这是我的代码:
<form>
<input type="text" id="test" name="test">
</form>
Ajax
$(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
添加另一个值。
我该如何进行连接?
如果您确定您的用户使用现代浏览器,您可以使用 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()
});
编辑:为了处理表单中重复键的情况,我们不能明确地使用 .get
和 .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,
});
我有一个带有输入字段的表单,用户可以在其中输入数据。我使用 Ajax 发送它,我希望每个字段都向 concat.
发送一个值。所以如果用户引入测试。可见的结果应该
是 www.google.com/test
。
这是我的代码:
<form>
<input type="text" id="test" name="test">
</form>
Ajax
$(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
添加另一个值。
我该如何进行连接?
如果您确定您的用户使用现代浏览器,您可以使用 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()
});
编辑:为了处理表单中重复键的情况,我们不能明确地使用 .get
和 .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,
});