【问题标题】:Problem to send two boolean with ajax and setTimeout()使用 ajax 和 setTimeout() 发送两个布尔值的问题
【发布时间】:2020-12-18 16:30:42
【问题描述】:

我有两个函数,每个函数都应该在带有 ajax 的 php 页面上发送 0 或 1。 当按下键盘上的一个键时,发送 1 的函数将启动,而发送 0 的函数必须在三秒后使用 setTimeout () 启动。 问题是第二个函数没有发送。 我把相应代码的一方发给你。 提前感谢您的帮助,请原谅我的英文不太好阅读^^'

我的代码:

function typing() {
  var typingBool = 1
  if (typingBool != "") {
    let donneee = {}
    donneee["typingBool"] = typingBool
    let donneeeJson = JSON.stringify(donneee)
    let xmlhttp = new XMLHttpRequest()
    xmlhttp.open("POST", "ajax/typing.php")
    xmlhttp.send(donneeeJson)
  }
}

function typing2() {
  var typingBool = 0
  if (typingBool != "") {
    let donneee = {}
    donneee["typingBool"] = typingBool
    let donneeeJson = JSON.stringify(donneee)
    let xmlhttp = new XMLHttpRequest()
    xmlhttp.open("POST", "ajax/typing.php")
    xmlhttp.send(donneeeJson)
  }
}

var typingText = document.getElementById('texte');
typingText.addEventListener('keypress', function() {
  typing();
  setTimeout(function() {
    typing2()
  }, 3000);
})

【问题讨论】:

  • 你的 typing2 函数没有多大意义,typingBool var 和 if 的目的是什么?
  • 0 != "" false,因为0 是假的,而"" 是假的,所以你的if 不会通过。使用!== 进行严格检查。但是,是的,您的代码似乎有点冗长,可以缩短很多
  • 分配变量后立即执行if 有什么意义?

标签: javascript php ajax


【解决方案1】:

这里的主要问题是difference between != & !==

if (0 !=  "") { console.log("Won't be displayed"); }
if (0 !== "") { console.log("Will be displayed");  }

话虽如此,您的代码可以缩短一点,这应该可以工作:

function typing(typingBool){
  let donneeeJson = JSON.stringify({ typingBool: typingBool });
  let xmlhttp = new XMLHttpRequest();
     
  xmlhttp.open("POST", "ajax/typing.php");
  xmlhttp.send(donneeeJson);
}

var typingText = document.getElementById('texte');
typingText.addEventListener('keypress', function(){
  typing(1);
  setTimeout(function(){ typing(0); }, 3000);
});

【讨论】:

  • 它有效,非常感谢您的帮助,我很感激! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 2013-01-20
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
相关资源
最近更新 更多