Javascript XMLHttpRequest.response是否真的为null

Javascript XMLHttpRequest.response是否真的为null,javascript,ajax,Javascript,Ajax,对不存在的数据库元素进行AJAX调用。然后处理程序如下所示: if (xhr.readyState === 4 && xhr.status === 200 && xhr.response !== null) { console.log('response type is ' + typeof xhr.response); // string console.log('response is ' + xhr.response);

对不存在的数据库元素进行AJAX调用。然后处理程序如下所示:

if (xhr.readyState === 4 && xhr.status === 200 && xhr.response !== null) {
    console.log('response type is ' + typeof xhr.response); // string
    console.log('response is ' + xhr.response);             // null
    // rest of the handler//
{

问题是,如果我声明仅当响应不为null时才执行,为什么我的处理程序会执行块(它总是转到控制台和日志字符串并为null)?

如果它真的是日志记录的话

response type is string response is null 响应类型为字符串 响应为空
…很明显,响应是字符串
“null”

如果它真的在记录

response type is string response is null 响应类型为字符串 响应为空
…很明显,响应是字符串
“null”

如果它真的说
响应类型是字符串
响应是null
,那么响应显然是字符串“null”。而不是在黑暗中用
控制台蹒跚而行。不过,日志
火炬,我建议使用浏览器内置的强大调试器打开指示灯。在该块中设置一个断点,并在代码暂停在断点上时检查
xhr.response
的值。同时查看开发人员工具的网络选项卡并检查HTTP响应的原始数据。如果它真的说
响应类型为string
并且
响应为null
,那么,很明显,响应是字符串
“null”
。不过,我建议使用浏览器内置的强大调试器打开指示灯,而不是在黑暗中用
控制台.log
手电筒蹒跚而行。在该块中设置断点,并在代码暂停在断点上时检查
xhr.response
的值。另外,请查看开发人员工具的“网络”选项卡并检查HTTP响应的原始数据。感谢所有人的反馈,包括上述评论。这让我的JS入门更容易。伊藤:很高兴这有帮助。如果它回答了问题,您应该通过单击旁边的复选标记来“接受”答案。不管你的名声如何,你都可以接受你提出的问题的答案。享受JavaScript带来的乐趣!感谢大家的反馈,包括上述评论。这让我的JS入门更容易。伊藤:很高兴这有帮助。如果它回答了问题,您应该通过单击旁边的复选标记来“接受”答案。不管你的名声如何,你都可以接受你提出的问题的答案。享受JavaScript带来的乐趣!