2017-08-27 10 views
0

私はサインアップフォームを構築しようとしています。私はの値がのajaxの機能がであることを確認する必要があります。またはfalseです。私はここに、この問題で立ち往生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; 
     } 

**

+0

「newEmptyPHP.php」へのリクエストを行うと、応答が必要です。応答にはヘッダーと本文があります。それらを使用して操作の「結果」を提供することができます。 (つまり、httpステータスコードで、200 OKと4xxを使用)。 – Federkun

答えて

1

json形式でtrueまたはfalseをエコーする必要があります。このような sth。

<?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 
     } 
    }) 
}) 
関連する問題