Сбой метода POST XmlHttpRequest с кодом состояния 400 в IE11 - PullRequest
0 голосов
/ 15 мая 2019

У меня есть приложение React, содержащее метод JavaScript, который отправляет данные в метод сервера. Этот метод прекрасно работает в любом браузере под солнцем ... кроме IE11 (шокирующее, я знаю). К сожалению, для этого проекта требуется поддержка IE11.

Журналы IIS показывают 400 (неправильный запрос) кодов состояния HTTP.

Я решил не использовать fetch () из-за его несовместимости с IE11, и я бы предпочел не прибегать к внешним библиотекам, таким как 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 голосов
/ 16 мая 2019

Проблема была связана с некоторыми значениями переменных. Я использовал интерполяцию строк ES6 (т. Е. Обратные тики), которая не поддерживается в IE.

...