JQuery 即使数据未定义也不会重新加载

JQuery doesn't reload even if data is undefined

我有这个功能可以检查 ajax 的登录数据(用户名和密码)是否正确。 如果 php 结果是错误的,那么我打印错误,但如果结果为空,我想重新加载页面。

function(data) {
  if (data.length && data != null) {
    $("span.error").remove();
    $(".login-overlay .login h3").after('<span class="error">' + data + '</span>');
  } else {
    location.reload();
  }
}

问题是,当 php 结果(数据)为空时,代码打印一个空跨度

<span class="error"></span>

我认为错误在 if 子句,但我什么都试过了:

data.length
data.length > 0
data != undefined
data != null
data

感谢您的帮助!

function(data) {
  if (data && data.trim()) {
    data = data.trim();
    $("span.error").remove();
    $(".login-overlay .login h3").after('<span class="error">' + data + '</span>');
  } else {
    location.reload();
  }
}

您可能只想检查数据是否已定义。所以这应该有效。否则请显示 data 究竟是什么。您可以通过在函数开始时执行 console.log(data) 来做到这一点

我认为,由于您同时检查了数据和 data.length,因此 IF 语句未通过。您从服务器传递的数据会枯竭,因此可能总会有数据,而 IF 语句将不起作用。如果 DATA 确实是一个字符串,我会尝试以下代码:

function(data) {
    if(data.length > 0){
    $("span.error").remove();
    $(".login-overlay .login h3").after('<span class="error">'+data+'</span>');
} else {
    location.reload(); }
}