【问题标题】:if statement not working jqueryif语句不起作用jquery
【发布时间】:2017-10-22 03:09:24
【问题描述】:

这应该很简单,但不起作用

如果答案是“是”,基本上我想获得返回结果并重新加载我的页面

这里是 timer.php

<?php
    $filename = 'timer.tmr';

    if (file_exists($filename)) {
        unlink($filename);
        echo 'yes';
    } else {
        echo 'no';
    }
?>

这是我的主文件中的脚本

var myVar = setInterval(function () {myTimer()}, 5000);
function myTimer() {
     sendto =  "timer.php";
     $.get(sendto, function(data, status) {
         if (data === 'yes') {
            location.reload();
         }
     });
}

基本上在timer.php

如果文件存在,我将其删除并返回“是”

但是jquery 不执行重新加载功能,如果我使用警报(数据)检查数据,它会返回“是”所以我只是不明白这个问题。

【问题讨论】:

  • 试试 window.location.reload();
  • 你怎么知道它没有重新加载?尝试 location.reload(true) 强制重新加载。
  • 你可以试试if (data == 'yes')吗?因为'yes' 可能存在问题。
  • 当你使用=='yes'而不是==='yes时会发生什么
  • 如果您遇到if 条件,那么您应该尝试window.location.href = window.location.href; 而不是location.reload();

标签: php jquery


【解决方案1】:

如果您遇到if 条件,那么您应该尝试window.location.href = window.location.href; 而不是location.reload();

如果您没有进入if 条件,请使用if ($.trim(data) === "yes") 更改条件


感谢 Shaunak Shukla(再次感谢)

这是最终的解决方案

     var myVar = setInterval(function () {myTimer()}, 10000);
     function myTimer() {
     sendto =  "timer.php";
     $.get(sendto, function(data, status) {
     if ($.trim(data) === "yes"){
       location.reload();
       }
      });

       }

它需要 trim(data) 里面一定有东西..

【讨论】:

    【解决方案2】:

    我会建议,请检查类型转换(数据类型)。我发现,你使用了 === ,它会检查 string 到 string 或 int 到 int。

    【讨论】:

    • 它正在返回一个字符串
    • 那么请对ajax返回的数据使用trim函数
    【解决方案3】:

    让完成 ajax 请求然后尝试重新加载:

    setTimeout(function(){// wait for 5 secs(2)
            location.reload(); // then reload the page.(3)
    }, 5000);
    

    【讨论】:

    【解决方案4】:

    在 echos 中使用 json_encode 并改进您的检查:

    <?php
    $filename = 'timer.tmr';
    
    if (file_exists($filename)) {
    
        unlink($filename);
        if (!file_exists($filename))
           echo json_encode('yes');
        else
           echo json_encode('no');
    } else {
    
        echo json_encode('no');
    }
    
    ?>
    

    并将重新加载更改为更直接的范围:

     var myVar = setInterval(function () {myTimer()}, 5000);
     function myTimer() {
    
     sendto =  "timer.php";
     $.get(sendto, function(data, status) {
       if (data === 'yes'){
        window.location.reload();
      }
      });
    
      }
    

    【讨论】:

    • 他提到alert(data) 确实返回“是”。这意味着,它工作正常并且不需要 json。嗯?
    • 是的,但最好在使用 ajax 时始终发送 json 内容。
    • 我进行了更改,但仍然无法正常工作......让我发疯
    • 放入数据 == 'yes' 只是为了测试。请把console.log给我们
    • 我知道重新加载不起作用,因为我的页面没有刷新..
    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多