javascript url 调用执行两次

javascript url call executing twice

我试图在 javascript 警告框中显示此 json 数据,但它显示了两次(相同的内容)。它正在工作,但我不知道为什么它会显示两个警报。 (javascript 不是我的首选语言)。

这是来自 URL 的回复:

{
  "type": "error",
  "response": {
    "message": "Could not start app"
  }
}

这是我使用的代码:

<script type="text/javascript">
       
        function call() {
            const Http = new XMLHttpRequest();
            const url='https://url_to_get_the_response';
            Http.open("GET", url);
            Http.send();
            Http.onreadystatechange = (e) => {
                if (Http.responseText) {
                alert(Http.responseText);
               }
           }
    }
    </script>

我收到两个警报,都包含相同的内容(.json 结果)。我只想要其中之一。

我尝试在 if (Http.responseText) 部分添加 return;break call;。在 if 语句中添加 return; 没有任何作用,添加 break call; 使其停止工作。

对此有何建议?谢谢。

你的做法是正确的。 onreadystatechange 事件被多次触发,因为 readyState 属性从 API 调用的开始到结束发生变化。

XMLHttpRequest 对象中的适当 readyState status 值添加 if 条件。解决了这个问题。

您可以在此处阅读有关这些属性的更多信息readyState, status

function call() {
        const Http = new XMLHttpRequest();
        const url='https://jsonplaceholder.typicode.com/todos/1';
        Http.open("GET", url);
        Http.send();
        Http.onreadystatechange = (e) => {
            if (Http.readyState == 4 && Http.status == 200 && Http.responseText) {
            alert(Http.responseText);
           }
       }
  }
<button onclick='call()'>Call</button>