我有一個阿賈克斯後的方法,如果成功將提醒「帳戶成功創建」。我的問題是,當它沒有創建它應該提醒帳戶已經存在,但它仍然警報相同的問題。阿賈克斯失敗的註冊不回聲結果
腳本代碼:
$(document).ready(function(){
$("#btn-register").click(function(){
var regaccount = $("#regaccount").val();
var regpass = $("#regpass").val();
if((regaccount == "") || (regpass == "")){
alert("Information required!");
}else {
$.ajax({
type: "POST",
url: "register.php",
data: "regaccount="+regaccount+"®pass="+regpass,
success: function(data){
alert("account successfully created!");
},
error:function(){
alert("account already exists");
}
});
}
$("#regaccount").val('');
$("#regpass").val('');
return false;
});
});
register.php
<?php
include 'function.php';
session_start();
ob_start();
$userid = rand(100000, 999999);
$regaccount = $_POST['regaccount'];
$regpass = $_POST['regpass'];
$regaccount = stripslashes($regaccount);
$regpass = stripcslashes($regpass);
$salt = "dctech2015ABcRXd";
$regpass = md5($regpass) . $salt;
$regpass = sha1($regpass);
$con = new Functions();
$con = $con->db;
$stmt = $con->query("SELECT * FROM users WHERE username = '$regaccount'");
$count = $stmt->rowCount();
if($count != 1){
$con = new Functions();
$con = $con->db;
$status="Offline";
$stmt = $con->prepare("INSERT INTO users(user_id, username, password, status)VALUES(:userid, :account, :password, :status)");
$stmt->bindValue(':userid', $userid);
$stmt->bindValue(':account', $regaccount);
$stmt->bindValue(':password', $regpass);
$stmt->bindValue(':status', $status);
$stmt->execute();
}else{
echo '<script>alert("account name already exists");</script>';
}
ob_end_flush();
?>
因爲你沒有返回任何錯誤..你只是回聲消息到register.php文件.......警報(數據); .........並檢查什麼來... ...我猜它總是在sucessfull下 –
'$ .ajax()'錯誤響應用於指示服務器上的頭響應錯誤。它不會**評估PHP腳本的條件語句返回值。相反,你應該返回一個有狀態的json對象,或者你可以在ajax回調的成功函數中有條件地觀察的東西。 – Ohgodwhy
根據register.php返回消息.....我的意思是,如果記錄insrted然後返回(回聲'成功'),如果記錄存在,然後返回(回聲'存在)....然後檢查到您的JavaScript數據下的數據並根據數據提醒 –