2017-11-19 7 views
0

私は、リダイレクトなしでフォームデータをPHPスクリプトに送信しようとしています。 私が持っている問題は、responseText関数が確実に動作しないようです。AJAX responseTextは信頼できません

注:PHPスクリプトは意図したとおりに動作します。そして、データベースに書き込むなどです。

AJAXコード:

$(document).ready(function(){ 
    $('#registreer').click(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "assets/PHP/registreer.php", 
      data: $('form').serialize(), 
      success: function(jqXHR, textStatus) {alert("Succes" + jqXHR.responseText);}, 
      error: function(jqXHR, textStatus) {alert("Error" + jqXHR.responseText);} 
     }) 
    }); 
}); 

PHPコード:

$conn = mysqli_connect($servername, $username, $password, $dbname); 

// Check connection 

if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

if ($passwordPost != $passwordRetypePost) { 
    echo "Paswoorden zijn niet hetzelfde!"; 
} else { 
if (!($stmt = $conn->prepare("SELECT * FROM `Gebruikers` WHERE `Email` = ?"))) { 
    echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
} else { 

$stmt->bind_param("s", $emailPost); 
$stmt->execute(); 
$stmt->bind_result($id, $email, $paswoord, $rol); 
$stmt->store_result(); 

if ($stmt->num_rows > 0) { 
    echo "Email bestaat al!"; 
} else { 
    $stmt->close(); 
    $hash = password_hash($passwordPost, PASSWORD_DEFAULT); 
    if (!($stmt = $conn->prepare("INSERT INTO `Gebruikers`(`Email`, `Paswoord`) VALUES (?,'$hash')"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
    } 

    $stmt->bind_param("s", $emailPost); 
    $stmt->execute(); 
    echo 'Gelukt!'; 
} 
} 
} 

$mysqli->close(); 

だから、何らかの理由で私が得ることができる唯一の応答は次のとおりです。

echo "Email bestaat al!"; 

他のすべてのエコーのはいないようです私のHTMLページに取り組んでいます。私が何を試しても問題ありません。

ご提案は大歓迎です!

+0

エコーに達した場合、他のエコーには到達してはいけません。私は問題を見ない。 –

+0

成功したコールバックでは、最初の引数はjqXHRではありません。それを正しくコピーしてもよろしいですか? –

答えて

1

既にデータベースに$emailPostが存在し、その答えが真であるかどうかをチェックしているため、そのメッセージが表示されます。これがあなたがこのメッセージを受け取った理由です。

別のメールアドレスを使用しましたか?

また、あなたのjQueryコールバック(successerror)では、PHP側でエラーを投げないため、常に「成功」​​ということになります。 echo 'Gelukt!';を正しく使うことができる成功例を除き、throw new Exception('Prepare failed [...] ')のようなものをphpにあるすべての 'echo'や 'die'文に使うのがよいでしょう。

+0

答えをありがとう! はい、私は他のメールアドレスを試しました。そして、私のデータベースにはうまくいきます。しかし警告ボックスには「エラー」があります。エコーではありません。 私には1つのエコーが実際に働いているようです。 –

+0

haa! OK !あなたは "console.log(jqXHR);を使うのが良いでしょう。 'alert(...) 'を使う代わりにコールバックでもっと情報があります。 あなたが得ることができる唯一の応答が "Email bestaat al!"であることをどのように知っていますか?あなたは "エラー"しか見ることができないのですか? –

+0

エラーは、jqueryのエラーコールバックの一部です。次に、印刷する応答テキストを要求しましたが、エラーコールバックはサーバーへの接続に問題があるためのものなので、応答テキストはありません。 – miknik

関連する問題