jQuery IF语句不起作用

Sam*_*amV 2 javascript php ajax if-statement

我执行ajax查询以检查mysql数据库中汽车的名称,如果找到汽车,它将返回"汽车名称不可用",否则"汽车名称可用".此文本放入id为"checkname"的div中.

所有这一切运行正常,但当我试图隐藏添加按钮,如果汽车名称不可用,它没有这样做,我不知道为什么:/

function check_name(){

 $.ajax({
  type: "POST",
  url: "http://localhost/Framework/library/php_files/check_car_name.php",
  data:  "carName=" + document.getElementById("carName").value,
  success: function(html){
   $("#checkname").html(html);
  }
 });

 var currentHtml = $("#checkname").html();
 var compareString = "Car name unavailable";

 if (currentHtml==compareString) {
  $("#submit").hide();
 } else {
  $("#submit").show();
 }

} 
Run Code Online (Sandbox Code Playgroud)

use*_*716 7

依赖于从AJAX请求的响应的任何代码,必须调用内部的回调于该请求.

function check_name() {
    $.ajax({
        type: "POST",
        url: "http://localhost/Framework/library/php_files/check_car_name.php",
        data: "carName=" + document.getElementById("carName").value,
        success: function (html) {
            $("#checkname").html(html);

             // I placed your code here instead.
             // Of course you wouldn't need to set and then get the HTML,
             //    since you could just do a direct comparison.
            var currentHtml = $("#checkname").html();
            var compareString = "Car name unavailable";
            if (currentHtml == compareString) {
                $("#submit").hide();
            } else {
                $("#submit").show();
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

原因是默认情况下,AJAX请求是异步的,这意味着请求之后的代码将立即执行,而不是等待响应返回.

比较HTML时要记住的另一个可能的问题是空白区域.如果你正在进行字符串比较,它必须完全相同,所以如果有空格,你需要先修剪它.您可以使用jQuery.trim()(docs)来执行此操作.