XMLHttpRequest не получает ответ при вызове внутри функции - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть форма HTML, которая вызывает после отправки, функция-

function getLocationTemp() {
    temp= new XMLHttpRequest();
    temp.open('GET', 'url', true);
    temp.onload = function () {
        console.log(temp.response);
    }
    temp.send();
}

По какой-то причине я никогда не получаю ответ на этот вызов API. Я попытался отладить ReadyState, и я всегда на-1.

Хотя, когда я выполняю тот же блок кода вне функции, как - 1006 *

temp= new XMLHttpRequest();
temp.open('GET', 'url', true);
temp.onload = function () {
    console.log(temp.response);
    }
temp.send();
function getLocationTemp() {
console.log('random');
}

Это работает, я получить данные и код ответа как 4.

Я предположил, что проблема была в том, что поток покинул функцию, и поэтому локальная нагрузка вышла за рамки. Поэтому попытался запустить для l oop с 0-100 внутри функции, думая, что это даст ему достаточно времени для получения ответа, а также поместил некоторое время l oop, которое не завершится, пока readystate не станет равным 4. Но состояние не пройдет мимо 1.

В чем проблема?

1 Ответ

1 голос
/ 19 апреля 2020

Как указано в приведенных выше ответах, действие заключается в повторном рендеринге страницы и отмене запроса. Это было бы лучше сделать в виде обработчика функции onclick или изменения структуры для его вызова с использованием тега form и его атрибутов, таких как action и метод .

Пример выполнения этого с помощью метода onclick: -

function getLocationTemp() {
    temp= new XMLHttpRequest();
    temp.open('GET', 'url', true);
    temp.onload = function () {
        console.log(temp.response);
    }
    temp.send();
}

, а в html что-то вроде этого -

<button  type="button" onclick="getLocationTemp()">Submit Form</button>
...