2017-03-19 8 views
0

これで、register-process.phpにデータを送信するajax関数があります。 register-process.phpさんがPHP値$msgをajaxに送り返して欲しいです。私は成功のために$('.message').html("<?php $msg; ?>").fadeIn(500);を使ってみましたが、うまくいきません。それを行う方法はありますか?あなたのAjax機能で送信フォームデータのAjaxにPHP変数を返す

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#submit").click(function() { 
     var username = $("#username").val(); 
     var password = $("#password").val(); 
     var email = $("#email").val(); 
     var cpass = $("#cpass").val(); 
     var dataString = { 
      username: $("#username").val(), 
      password: $("#password").val(), 
      email: $("#email").val(), 
      cpass: $("#cpass").val() 
     }; 
     $.ajax({ 
      type: "POST", 
      url: "register-process.php", 
      data: dataString, 
      cache: true, 
      success: function(html){ 
       $('.message').html("<?php $msg; ?>").fadeIn(500); 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 

レジスタ-process.php

<?php 
include'config/db.php'; 
$msg = null; 
$date = date('Y-m-d H:i:s'); 

$uname = (!empty($_POST['username']))?$_POST['username']:null; 
$pass = (!empty($_POST['password']))?$_POST['password']:null; 
$cpass = (!empty($_POST['cpass']))?$_POST['cpass']:null; 
$email = (!empty($_POST['email']))?$_POST['email']:null; 

if($_POST){ 
    $stmt = "SELECT COUNT(*) FROM members WHERE mem_uname = :uname"; 
    $stmt = $pdo->prepare($stmt); 
    $stmt-> bindValue(':uname', $uname); 
    $stmt-> execute(); 
    $checkunm = $stmt->fetchColumn(); 

    $stmt = "SELECT COUNT(*) FROM members WHERE mem_email = :email"; 
    $stmt = $pdo->prepare($stmt); 
    $stmt->bindValue(':email', $email); 
    $stmt->execute(); 
    $checkeml = $stmt->fetchColumn(); 

    if($uname == '' or $pass == '' or $cpass == '' or $email == ''){ 
     $msg = "<div class='message-error'>Fields cannot be left empty. Please fill up all the fields.</div>"; 
    }else if($checkunm > 0){ 
     $msg = "<div class='message-error'>This username is already registered. Please use a different username.</div>"; 
    }else if($checkeml > 0){ 
     $msg = "<div class='message-error'>This Email ID is already registered. Please use a different Email ID.</div>"; 
    }else if($pass != $cpass){ 
     $msg = "<div class='message-error'>Passwords are not matching.</div>"; 
    }else if(strlen($uname) > 12){ 
     $msg = "<div class='message-error'>Username should not be more than 12 characters long.</div>"; 
    }else if(strlen($uname) < 6){ 
     $msg = "<div class='message-error'>Username must be at least 6 characters long.</div>"; 
    }else if(strlen($pass) < 6){ 
     $msg = "<div class='message-error'>Password must be at least 6 characters long.</div>"; 
    }else{ 
     // If everything is ok, insert user into the database 
     $stmt = "INSERT INTO members(mem_uname, mem_pass, mem_email)VALUES(:uname, :pass, :email)"; 
     $stmt = $pdo->prepare($stmt); 
     $stmt-> bindValue(':uname', $uname); 
     $stmt-> bindValue(':pass', password_hash($pass, PASSWORD_BCRYPT)); 
     $stmt-> bindValue(':email', $email); 
     $stmt-> execute(); 

     if($meq){ 
      $msg = "<div class='message-success'>Congratulations! You have been registered successfully. You can now login!</div>"; 
     }else{ 
      $msg = "<div class='message-error'>Server Error! Please try again later. If problem persists, please contact support.</div>"; 
     } 
    } 
} 
echo $msg; 
?> 

答えて

1

以下のようなあなたのhtml要素へのphp variable.Justマップ応答をエコーする必要はありません:

$.ajax({ 
      type: "POST", 
      url: "register-process.php", 
      data: dataString, 
      cache: true, 
      success: function(html){ 
       console.log(html);//see output on browser console 
       $('.message').html(html).fadeIn(500); 
      } 
     }); 
+0

うわーとても簡単..働いているのは、 '.html'の中に' html'を入れるだけでした。偉大な..あなたはこれについて少し説明できますか? –

+0

サーバからの応答は、 'json'、' html'、 'text'などの形式である可能性があります。応答が返ってくると、response.Inを処理する方法を定義するjs [not php]の一部になりますあなたのケースでは、 'html'形式の応答をAjaxの成功関数に入れるだけで、' $(selector).html() 'を適切に設定する必要があります。 –

+0

は、この「API」http://api.jquery.com/jquery.ajax/で約30分のツアーを行います。 –

関連する問題