【问题标题】:JQuery doesn't reload even if data is undefined即使数据未定义,JQuery 也不会重新加载
【发布时间】:2019-06-16 00:13:46
【问题描述】:

我有这个函数,它使用 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

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

我认为错误在 if 子句中,但我尝试了所有方法:

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

感谢您的帮助!

【问题讨论】:

  • 我认为你必须先检查 data != null 然后 data.length > 0
  • 这很容易调试;如果你console.log(data)console.log(data.length),你会得到什么?
  • 请分享data如果出现错误和成功的样子
  • 你也应该使用location.reload(true);返回服务器,而不是从头开始重新加载 fetcjed 页面
  • 你也可以粘贴你的php代码吗?

标签: javascript jquery ajax login


【解决方案1】:
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) 来做到这一点

【讨论】:

  • 我已经尝试过了,但它不起作用。我也试过这个:在 php 文件中,如果没有错误,我打印一个“成功”。现在,在 .js 文件中,我尝试了这个:if(data == "success"),但仍然不起作用。因此,我尝试使用 console.log(data); 记录数据;并且数据包含“成功”和下一行的空白。
  • 似乎发生了一些额外的空白。理想情况下,您希望在端点中解决该问题。现在您可以先尝试在您的数据上使用.trim()。我会更新答案
  • console.log(data) 为空时能否显示结果?
  • 很高兴听到,如果您可以访问 php,我建议您在该侧进行实际修剪
【解决方案2】:

我认为,由于您同时检查了数据和 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(); }
}

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多