ajax PHP表单验证显示错误按摩时没有成功

时间:2017-09-28 08:38:40

标签: php jquery ajax

我知道这个问题很可能在之前被问过但是从我搜索的内容中我无法找到我想要的答案。

这就是问题所在:

我有一个通过ajax $ post发送到名为upload_data.php的php文件的表单。 这个文件调用一个名为insert_data的php函数,php函数包含一个简单的检查,看看$idNo变量是否已经存在。

到现在为止,一切都很好。 我的问题是如何向用户显示我从php函数收到的错误。

这是文件:

ajax电话:

            $.ajax({
                url: 'upload_data.php',
                data: fd,
                cache: false,
                contentType: false,
                processData: false,
                type: 'POST',
                success: function(data) {
                    console.log(data);
                      $('#error').append(data);

                }
            });

upload_data.php

$upload_dir = "uploads/vitur-sodiut/";
$img = $_POST['hidden_data'];
$idNo = $_POST['idno'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];



$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = $upload_dir . "" . $idNo . ".png";
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';


$suc = new Form;
$suc->insert_data($lname, $fname, $file, $idNo);

insert_data function

public function insert_data($lname, $fname, $file, $idNo){

    $stmt = $this->dbh->prepare('SELECT * FROM vitur_sodiut WHERE idno=?');
    $stmt->bindParam(1,  $idNo);
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    var_dump($row);
    if( ! $row)
    {



        $query = $this->dbh->prepare("INSERT INTO vitur_sodiut (lname, fname, file, idno) VALUES(?, ?, ?, ?)"); 
        $query->bindparam(1, $lname);
        $query->bindparam(2, $fname);
        $query->bindparam(3, $file);
        $query->bindparam(4, $idNo);



        try {
        $query->execute();
            if (!$query) { //בודק אם הנתונים הוכנסו למנ
                echo "Failure conncting db!";
            }else{
                $success["body"] = "You request just sending to the server ...";
                header("HTTP/1.1 200 OK", true, 200); 
            }
        }
        catch (PDOException $e) {
            die($e->getMessage());
        }
    }else{
        echo'value already exists in the table';
    }
}

这是我的控制台的快照。我们看到的是来自ajax调用的数据变量。 php函数的结果不在数组中。

enter image description here

1 个答案:

答案 0 :(得分:-1)

要显示从php到ajax调用的错误,请更新你的ajax成功回调函数,如下所示。

    success: function(data) {
      if(data.error==true) //error is a variable from php as a flag
     {
       $('#error').append(data);
      }
   }

将从php返回数据。所以将数据从php发送到ajax调用为json,并将flash更新为true,并在数据出错时存储。