gpt4 book ai didi

javascript - window.URLSearchParams 在 Edge 上损坏

转载 作者:行者123 更新时间:2023-11-30 11:00:12 24 4
gpt4 key购买 nike

我正在尝试以下操作;

let formUrl = new window.URLSearchParams(
new window.FormData(this.searchForm)
).toString()

但我收到“0:无效参数”

这适用于除 edge 之外的所有浏览器。

有没有人遇到过这个问题

最佳答案

Edge 中的问题是 they do not support FormData 对象的解构。 (链接表中的 for ... of)。

实际上,您在代码中依赖于其他浏览器的这种行为,因为 URLSearchParams( init ) 构造函数接受 record作为 init 参数。

The specs阅读

  1. Otherwise, if init is a record, then for each namevalue in init, append a new name-value pair whose name is name and value is value, to query’s list.

所以这意味着你的代码实际上在做

const formData = new FormData( searchForm );

const urlParams = new URLSearchParams();
for ( let [ name, value ] of formData ) {
urlParams.append( name, value );
}
let formUrl = urlParams.toString();

console.log( formUrl );
<form id="searchForm">
<input name="foo" value="bar">
<input name="baz" value="bla">
</form>

但是,由于 Edge 再次不支持 FormData 的解构,因此您的代码中断了。

但是,根据 MDN,它们确实支持 for ... of FormData.entries(),所以这也许可行(尽管没有要测试的 Edge,所以请告诉我)。

let formUrl = new window.URLSearchParams(
new window.FormData(this.searchForm)
.entries() // explicitely call .entries() to get the iterator
).toString()

console.log( formUrl );
<form id="searchForm">
<input name="foo" value="bar">
<input name="baz" value="bla">
</form>

关于javascript - window.URLSearchParams 在 Edge 上损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58117132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com