Ajax 调用始终运行成功函数


Ajax call always runs success function

我想验证服务器(PHP)的user_id和手机号码。 当我输入错误的user_id和手机号码时,所以每次 Ajax 都是执行成功 (if) 部分而不是其他部分。

我的阿贾克斯是

         <script>
          $(document).ready(function() {
          $("#b").click(function(){
          var user_id=$('#user_id').val();
          var mobile=$("#mobile").val();
                    $.ajax({
                            type:"POST",
                            url:"http://localhost/test.php",
                            data:{user_id:user_id, mobile:mobile},
                              success:function(response){
                                if(response="valid"){
                                    alert(response);
                                    window.location='https://www.google.co.in';
                                }
                                else{
                                    alert("invalid");
                                }                       
                              },
                              error:function(response){
                                alert("error");
                              }
                          });       
                });  
              });
</script>

我的 PHP 代码

 <?php
  $user_id=$_POST['user_id'];
  $mobile=$_POST['mobile'];
  $con=@mysql_connect("localhost","root","")or die('connection failed: ' . mysql_error());
  $db=mysql_select_db("sorethroat");  
  $result = mysql_query("SELECT * FROM `myfieldmembers` where `employee_id`='".$user_id."' && `mobile`='".$mobile."'");
    if($result === FALSE) { 
        die(mysql_error()); // TODO: better error handling
    }
    if(mysql_num_rows ($result)>0) {
      echo "valid";
    } else {
      echo"invalid";
    }
 ?>

硬编码后,在服务器端,此 PHP 工作正常

response="valid"更改为response=="valid"

您已经通过将有效/无效替换为 1/0 来解决它,因此它现在可以工作了。

对于遇到相同问题且无法替换为 0/1 的人:

检查response的长度。有时会添加空格,在这种情况下,当您在屏幕上检查值时,看起来就像您在比较"短语"=="短语",但您的代码将比较"短语"=="短语"(注意空格),这是不一样的。

在不得不自己处理这个问题之后,我默认使用它

response = response.trim();