Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jqueryif语句不工作_Php_Javascript_Ajax_If Statement - Fatal编程技术网

Php jqueryif语句不工作

Php jqueryif语句不工作,php,javascript,ajax,if-statement,Php,Javascript,Ajax,If Statement,我正在执行一个ajax查询,以检查mysql数据库中的汽车名称,如果找到汽车,它将返回“汽车名称不可用”,否则返回“汽车名称可用”。此文本被放入id为“checkname”的div中 所有这些都运行良好,但当我试图隐藏添加按钮时,如果汽车名称不可用,它将无法这样做,我不知道为什么:/ function check_name(){ $.ajax({ type: "POST", url: "http://localhost/Framework/library/php_files/chec

我正在执行一个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();
 }

} 

任何依赖于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();
            }
        }
    });
}
原因是默认情况下,AJAX请求是异步的,这意味着请求之后的代码将立即执行,而不是等待响应返回


在比较HTML时要记住的另一个可能的问题是空白。如果要进行字符串比较,则必须完全相同,因此如果有空格,则需要首先对其进行修剪。您可以使用来完成此操作。

您必须将代码放入AJAX请求成功回调中,否则它将在AJAX调用完成之前被调用。将它放在成功回调中意味着包含IF语句的代码只会在AJAX调用完成后运行。尝试:

函数检查_name(){


按照patrick dw的建议,您可能可以解决这个问题(很可能ajax调用尚未完成(即div内容未更新),并且检查返回false),但由于字符串比较可能会导致许多错误(例如由于换行符、尾随空格、大小写敏感等原因导致字符串不匹配)我建议你用另一种比较方法

例如,如果找到了汽车,可以使用.addClass()添加一个类,然后使用.hasClass()检查该div是否具有“find”类。post()的第三个参数是从发布数据的文件返回的数据

我将输入的电子邮件地址传递给validate.php,validate.php检查它,如果它有效,则返回1

$('a.post').click(function() {
$.post('validate.php',{email : $("#email-field").val()}, 

function(data){
if(data==1)     
{  
//do something if the email is valid
} else { 
//do other thing
});

});

希望这能有所帮助。

只需将其放入成功回调中:
$(“#提交”)。切换(html==“Car name unavailable”);
就可以了,谢谢,您将如何实现它?我是jQuery新手
$('a.post').click(function() {
$.post('validate.php',{email : $("#email-field").val()}, 

function(data){
if(data==1)     
{  
//do something if the email is valid
} else { 
//do other thing
});

});