无法在epihpany浏览器上执行ajax请求

时间:2018-04-15 08:41:15

标签: javascript ajax web gnome epiphany

我目前正在网站上工作,我需要发送一个表单而不执行重定向。

我已完成以下操作:

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(); 返回一个空字符串。

有没有人有同样的问题?

2 个答案:

答案 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);
}