通过POST重定向 - Firefox中没有任何事情发生

时间:2016-08-11 16:01:59

标签: javascript firefox

我有一个端点,需要POST请求并生成一个文件。在前端,我需要使用表单提交重定向页面。但是,我需要动态生成表单(由于各种原因在前端)。

这是我的尝试(请记住,我必须编辑一堆代码,因为它涉及各种http相关组件):

sendRedirect(options) {
    options.form = this.createForm(options.body);
    options.form.setAttribute('method', 'post');
    options.form.setAttribute('action', redirectTo);
    options.form.submit();
}

createForm(body) {
    let form = window.document.createElement('form');

    return Object.keys(body).reduce((_form, key) => {
        let i = document.createElement('input');
        i.setAttribute('type', 'hidden');
        i.setAttribute('name', key);
        i.setAttribute('value', body[key]);
        _form.appendChild(i);
        return _form;
    }, form);
}

以上在谷歌浏览器中工作得很好。但是,在firefox中,没有任何反应(即form.submit()执行后没有发送网络请求)。我已经逐步完成了firefox中的代码,它似乎执行得很好(即所有变量都设置为它们应该是的)。代码到达form.submit()的执行结束,然后......没有。

提前致谢。

编辑:感谢Quentin的回答。以下是我为使其工作而添加的代码:

options.form.style.visibility = 'hidden';
window.document.getElementsByTagName('body')[0].appendChild(options.form);

1 个答案:

答案 0 :(得分:2)

表单需要成为Firefox提交文档的一部分。

在致电document.body之前将其附加到(例如)submit