2017-08-27 84 views
0

我試圖建立一個註冊表格那裏我需要檢查的值加載功能的AJAX是錯誤。有沒有辦法檢查ajax函數的返回值是真是假?

我卡在這個問題這裏是我的代碼

$("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; 
     } 

**

+0

當您向'newEmptyPHP.php'發出請求時,您會收到響應。響應包含標題和正文。您可以使用它們來提供操作的「結果」。 (即:使用http狀態碼,使用200 OK和4xx)。 – Federkun

回答

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 
     } 
    }); 
}); 
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 
     } 
    }) 
}) 
相關問題