我目前正在网站上工作,我需要发送一个表单而不执行重定向。
我已完成以下操作:
countDown() {
this.setState({isCounting: true});
setTimeout(() => this.setState({
squares: Array(9).fill(null),
xIsNext: true,
isCounting: false
}), 3000);
}
它适用于Google Chrome,Chromium,Firefox Quantum,但不适用于Epiphany浏览器和一些较旧的浏览器。
我想留在香草JS。
问题似乎是新的URLSearchParams(new FormData(my_form))。toString(); 返回一个空字符串。
有没有人有同样的问题?
答案 0 :(得分:0)
请参阅the MDN documentation,其中显示URLSearchParams
非常闪亮且新颖,因此没有广泛的浏览器支持。
它链接到a Google blog entry和图书馆,图书馆又链接到a polyfill。
当然,这个第三方库并没有随浏览器一起分发,因此可能不算作 vanilla JS ,所以你必须要从头开始重新实现。
答案 1 :(得分:0)
所以我最终创建了自己的功能。
感谢昆汀的回答。
function serialize (form, expected){
var encoded = new String();
var elements = form.elements;
var i;
for(i=0; i<elements.length; i++){
let e = elements[i];
if (expected.includes(e.name)){
if (e.multiple){
let options = e.options;
let j;
for(j=0; j<options.length;j++){
let o = options[j];
if(o.selected && !o.disabled){
encoded = encoded.concat('&',e.name,'=',o.value);
}
}
}else{
encoded = encoded.concat('&',e.name,'=',e.value);
}
}
}
return encoded.slice(1);
}