0
出於某種原因,我的ajax.responseTest來自我的PHP不會正確評估我在下面的JavaScript條件代碼。 ajax.responseTest會以「signup_success」的形式返回(我用一個警告框檢查它,它肯定會正確返回),但是我的JS代碼中的條件不會正確計算。AJAX PHP條件邏輯沒有正確評估
這裏是JavaScript:
else {
_("signupbtn").style.display = "none";
status.innerHTML = 'please wait ...';
var ajax = ajaxObj("POST", "signup.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText != "signup_success"){
status.innerHTML = ajax.responseText;
_("signupbtn").style.display = "block";
} else {
_("sign").innerHTML = ajax.responseText;
window.scrollTo(0,0);
_("signupform").innerHTML = "OK "+u+", check your email inbox and junk mail box at <strong>"+e+"</strong> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account.";
}
}
}
ajax.send("u="+u+"&e="+e+"&p="+p1+"&g="+g);
}
如果我更改了「ajax.responseText =!‘signup_success’」到「==」 else塊將運行邏輯運算符,所以沒有一些其他的問題在條件邏輯之前,我測試了它並且PHP(下面)正確地返回「signup_success」。你認爲這個問題可能在那個「if」陳述中?
下面是引用PHP:
<?php
// Ajax calls this REGISTRATION code to execute
if(isset($_POST["u"])){
// CONNECT TO THE DATABASE
include_once("php_includes/db_conx.php");
// GATHER THE POSTED DATA INTO LOCAL VARIABLES
$u = preg_replace('#[^a-z0-9]#i', '', $_POST['u']);
$e = mysqli_real_escape_string($db_conx, $_POST['e']);
$p = $_POST['p'];
$g = preg_replace('#[^a-z]#', '', $_POST['g']);
// GET USER IP ADDRESS
$ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR'));
// DUPLICATE DATA CHECKS FOR USERNAME AND EMAIL
$sql = "SELECT id FROM users WHERE username='$u' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$u_check = mysqli_num_rows($query);
// -------------------------------------------
$sql = "SELECT id FROM users WHERE email='$e' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$e_check = mysqli_num_rows($query);
// FORM DATA ERROR HANDLING
if($u == "" || $e == "" || $p == "" || $g == ""){
echo "The form submission is missing values.";
exit();
} else if ($u_check > 0){
echo "The username you entered is alreay taken";
exit();
} else if ($e_check > 0){
echo "That email address is already in use in the system";
exit();
} else if (strlen($u) < 3 || strlen($u) > 16) {
echo "Username must be between 3 and 16 characters";
exit();
} else if (is_numeric($u[0])) {
echo 'Username cannot begin with a number';
exit();
} else {
// END FORM DATA ERROR HANDLING
// Begin Insertion of data into the database
// Hash the password and apply your own mysterious unique salt
$p_hash = md5($p);
// Add user info into the database table for the main site table
$sql = "INSERT INTO users (username, email, password, gender, ip, signup, lastlogin, notescheck) VALUES('$u','$e','$p_hash','$g','$ip',now(),now(),now())";
$query = mysqli_query($db_conx, $sql);
$uid = mysqli_insert_id($db_conx);
// Establish their row in the useroptions table
$sql = "INSERT INTO useroptions (id, username, background) VALUES ('$uid','$u','original')";
$query = mysqli_query($db_conx, $sql);
// Create directory(folder) to hold each user's files(pics, MP3s, etc.)
if (!file_exists("user/$u")) {
mkdir("user/$u", 0755);
}
//Email the user their activation link
//$to = "$e";
// $from = "[email protected]";
// $subject = 'yoursitename Account Activation';
// $message = '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Dilingle Message</title></head><body style="margin:0px; font-family:Tahoma, Geneva, sans-serif;"><div style="padding:10px; background:#333; font-size:24px; color:#CCC;"><a href="http://www.dilingle.com"><img src="http://www.yoursitename.com/images/logo.png" width="36" height="30" alt="yoursitename" style="border:none; float:left;"></a>yoursitename Account Activation</div><div style="padding:24px; font-size:17px;">Hello '.$u.',<br /><br />Click the link below to activate your account when ready:<br /><br /><a href="http://www.yoursitename.com/activation.php?id='.$uid.'&u='.$u.'&e='.$e.'&p='.$p_hash.'">Click here to activate your account now</a><br /><br />Login after successful activation using your:<br />* E-mail Address: <b>'.$e.'</b></div></body></html>';
// $headers = "From: $from\n";
// $headers .= "MIME-Version: 1.0\n";
// $headers .= "Content-type: text/html; charset=iso-8859-1\n";
// mail($to, $subject, $message, $headers);
echo "signup_success";
exit();
}
exit();
}
?>
就像我說的,「signup_success」在PHP腳本結束肯定是射擊,但JS上面將無法正確評估。
在此先感謝!
你做到了!非常感謝Salman A,以及如此快速的迴應。你剛剛救了我幾個小時的頭痛,再次感謝! – trevorj 2013-03-20 12:00:57