2017-11-19 8 views
0

AJAXを使用して簡単なボタンロードを作成しようとしています。しかし、私が応答を送るたびに、ウィンドウは単に成功関数を実行する代わりにそれを表示します。AJAXがphpからレスポンスを受け取らず、代わりにレスポンスが出力されます。

私のコードは次のとおりです。(編集して、コード全体を投稿しないと申し訳ありません)

$(document).ready(function(){ 
$("#register-form").validate({ 
    rules:{ 
     email: { 
     required: true 
     }, 
    }, 
    submitHandler: submitRegister 
}); 
function submitRegister(){ 
    var data = $("#register-form").serialize(); 
    $.ajax({ 
    type: 'POST', 
    url: 'signupinc.php', 
    data: data, 
    beforeSend: function() { 
     $("#error").fadeOut(); 
     $("#register").html('Sending ...'); 
    }, 
    success : function(response) {  
     if(response==1){   
     $("#error").fadeIn(1000, function(){ 
      $("#error").html('<div class="alert alert-danger">&nbsp; Please input valid credentials!</div>');   
      $("#register").html(' &nbsp; Create Account');   
     });      
     } 
     else if(response=="registered"){   
      $("#register").html('&nbsp; Signing Up ...'); 

     } 
    } 
    }); 
    return false; 
} 

});ここで

は私のsignupinc.phpファイルのコードです:

<?php 

require 'db.php'; 

if(isset($_POST['register'])){ 
    $fname =$mysqli->escape_string($_POST['fname']); 
    $lname = $mysqli->escape_string($_POST['lname']); 
    $email = $mysqli->escape_string($_POST['email']); 
    $password = $mysqli->escape_string($_POST['pass']); 
    $hash = $mysqli->escape_string(md5(rand(0,1000))); 

    $emailstmt = $mysqli->prepare('SELECT * FROM users WHERE email=?') or die($mysqli->error()); 
    $emailstmt->bind_param('s', $email); 
    $emailstmt->execute(); 
    $emailstmt->store_result(); 
    $emailCheck = $emailstmt->num_rows; 
    if($emailCheck > 0){ 
     echo "1"; 
    } 
    else{ 
     $hashedpassword = password_hash($password, PASSWORD_DEFAULT); 
     $successstmt = $mysqli->prepare('INSERT INTO users (fname, lname, email, password, hash) 
     VALUES (?,?,?,?,?);'); 
     $successstmt->bind_param('sssss', $fname, $lname, $email, $hashedpassword, $hash); 
     $successstmt->execute(); 
     echo "2"; 
    } 
} 

そしてまた、ここでのスクリーンショットです。

enter image description here

+0

を呼び出す必要がありますボタンをクリックすると、phpページにリダイレクトされるajax呼び出しの? –

+0

ブラウザのURLから呼び出すことはできません。それはAjax関数を介して行う必要があります。あなたのコンソールには数字「1」が表示されるはずです – Akintunde007

+0

はい、私はページにリダイレクトされます。 –

答えて

0

問題は、フォームがデフォルトの方法で提出なっているということです...あなたは、デフォルトの動作を阻止して、あなたの代わりに意味するか、機能submitRegister

$('#register-form').submit(function(event){ 
    event.preventDefault(); 
    submitRegister(); 
}); 

function submitRegister(){ 
     var data = $("#register-form").serialize(); 
     $.ajax({ 
     type: 'POST', 
     url: 'signupinc.php', 
     data: data, 
     beforeSend: function() { 
      $("#error").fadeOut(); 
      $("#register").html('Sending ...'); 
      }, 
      success : function(response) {  
       if(response==1){   
       $("#error").fadeIn(1000, function(){ 
        $("#error").html('<div class="alert alert-danger">&nbsp; Please input valid credentials!</div>');   
        $("#register").html(' &nbsp; Create Account');   
       });      
       } 
       else if(response=="registered"){   
        $("#register").html('&nbsp; Signing Up ...'); 

       } 
      } 
+0

jQueryの検証プラグインを使用しています。submitRegisterはsubmitHandlerです。 –

+0

関数submitRegisterへの呼び出しを削除することはできますが、event.preventDefault()を呼び出すことができます... あなたの質問は不完全です。 –

0
1) In the php file please place this line for JSON response. 
    header('Content-Type: application/json'); 

2) json encode the result like 
    echo json_encode('1') 

3) in the ajax specify the data format like : 
    $.ajax({ 
     ........ 
     dataType: "json", 
     ........ 
    }) 
関連する問題