XmlHttpRequest POST方法在IE11中失败,状态码为400

时间:2019-05-15 16:24:58

标签: javascript reactjs xmlhttprequest internet-explorer-11 http-status-code-400

我有一个React应用,其中包含一个JavaScript方法,该方法将数据发布到服务器方法。这种方法在所有浏览器下都能正常工作……除了IE11(我知道令人震惊)。不幸的是,此项目需要IE11支持。

IIS日志显示400(错误请求)HTTP状态代码。

由于它与IE11不兼容,我选择不使用fetch(),而宁愿避免对单个浏览器的单个方法求助于外部库(例如axios或jQuery)。

我尝试了一些Content-Type标头值(application / json和x-url-form-encoded),还尝试了其他可能不相关的标头(Pragma,CORS-即使不是跨域,Cache-Control等。)

handleSubmit(event) {
    const booking = {
        'key1': 'value1',
        'key2': 'value2',
        'key3': 'value3',
    };

    const xhr = new XMLHttpRequest();
    const url = "api/Booking/AddBooking";

    xhr.open("POST", url);
    xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    xhr.send(JSON.stringify(booking));

    xhr.onreadystatechange = () => {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var response = JSON.parse(xhr.responseText);

            this.setState({
                bookingResponse: response,
                showModal: true
            });
        }
    }
    event.preventDefault();
}

我知道IE11可以使用外部库,因此必须使用香草JavaScript来解决此问题,我只是找不到它。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

该问题与某些变量值有关。我当时使用的是ES6字符串插值法(即反向滴答),而IE则不支持。