有没有办法检查ajax函数的返回值是true还是false?

时间:2017-08-27 07:34:26

标签: php

我正在尝试构建一个注册表单,我需要检查ajax的加载函数的值是 true 还是 false。

我遇到这个问题,这是我的代码

$("button").click(function(){
   $("#error").load("newEmptyPHP.php",{email:mail});
})

newEmptyPHP.php

<?php
        $mail=$_POST["email"];
        $db=new PDO("mysql:host=localhost;dbname=the_scops","root","");
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $STH=$db->prepare("SELECT email FROM signup WHERE email=?");
        $STH->execute([$mail]);
        if($STH->rowCount() == 1){
            //echo "<script>$('#error').html('Email alreday exist')</script>";
            return false;
        }
        else{
          return true;
        }

**

2 个答案:

答案 0 :(得分:2)

你知道,ajax调用返回函数或脚本的输出而不是它的评估。我强烈怀疑你手动调用代码时会有一个空响应,而发出ajax请求的javascript也是如此。

如果您显示程序中涉及的所有代码并且没有任何中间件来装饰您的返回值,则应该以类似于此的方式修改脚本:

<?php
    $mail=$_POST["email"];

    $db=new PDO("mysql:host=localhost;dbname=the_scops","root","");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $STH=$db->prepare("SELECT email FROM signup WHERE email=?");
    $STH->execute([$mail]);
    $result = [];
    if($STH->rowCount() == 1){
        // echo "<script>$('#error').html('Email alreday exist')</script>";
        $result["success"] = false;
        $result["message"] = 'Email already exists';
    } else{
      $result["success"] = true;
    }
    // comunicate to the client that the response is json encoded
    header('Content-type:application/json');
    // output the response
    echo json_encode($result);

javascript部分也必须改变(我不习惯jquery,小心翼翼):

$("button").click(function(){
   $.get("newEmptyPHP.php",{email:mail}, function(data) {
       if (data.success == false) {
           $('#error').html(data.message);
       } else {
         // do wathever you need in case of data.success
       }
    })
})

答案 1 :(得分:1)

你必须以json格式回显true或false。 ......这样。

<?php

     $result = array();
     $mail=$_POST["email"];
     $db=new PDO("mysql:host=localhost;dbname=the_scops","root","");
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $STH=$db->prepare("SELECT email FROM signup WHERE email=?");
     $STH->execute([$mail]);
     if($STH->rowCount() == 1){    
         $result['status'] = false;
     }
     else{
         $result['status'] = true;
     }

     echo json_encode($result);
     exit(0);

?>

修改: 你可以处理这样的反应。

$("button").click(function(){
   $("#error").load("newEmptyPHP.php",{email:mail},function(response){
       result = $.parseJSON(response);
       if(result.status){
           //true
       } else {
           //false
       }
   });
});