Ajax 为什么XMLHttpRequest对象属性,文件不存在时状态为200

Ajax 为什么XMLHttpRequest对象属性,文件不存在时状态为200,ajax,Ajax,当文件的url不正确时,为什么状态属性为200: var xhttp= new XMLHttpRequest(); xhttp.onload=function(){ console.log(xhttp.status); } xhttp.open('GET','notexist.php',false); xhttp.send(); 我的服务器上没有notexist.php。但是status属性仍然返回200 首先,onload在成功完成后运行。如果你在其中,你可以假设一个非4xx状态码

当文件的url不正确时,为什么状态属性为200:

var xhttp= new XMLHttpRequest();
 xhttp.onload=function(){
 console.log(xhttp.status);
 }
 xhttp.open('GET','notexist.php',false);
 xhttp.send();

我的服务器上没有notexist.php。但是status属性仍然返回200

首先,
onload
在成功完成后运行。如果你在其中,你可以假设一个非4xx状态码(几乎总是200)

但这不是你真正的问题。(最糟糕的情况是,这意味着您没有正确地处理错误。)真正的问题是,当您访问
notexist.php
时,状态代码代表服务器的响应。如果您的服务器返回一个200响应代码(无论是直接返回,还是可能返回到一个“错误”页面,该页面只是一个普通的网页),那么您的XMLHttpRequest将看到这一点,并且错误看起来像是成功的

确保页面未找到错误导致服务器返回404响应代码