【发布时间】:2015-08-17 00:29:44
【问题描述】:
我正在使用ajax 与PHP 进行通信。当获取的数据显示数据库中存在键入的电子邮件时,我使用echo 并带有消息'电子邮件已被占用,请尝试另一封电子邮件'。但是ajax responseText正在返回header file and echoed content。这是一张图片
如何才能将回显消息作为 ajax responseText?
这是我的代码
Javascript
function signup(){
var f=document.getElementById("firstname").value;
var l=document.getElementById("lastname").value;
var p=document.getElementById("password1").value;
var p2=document.getElementById("password2").value;
var e=document.getElementById("email").value;
var status=document.getElementById("status");
if(f=="" || l=="" || p=="" || p2=="" || e==""){
status.innerHTML="All fields are required";
}
else if(p!=p2){
status.innerHTML="passwords didn't match";
}
else{
document.getElementById("submitX").style.display = "none";
//status.innerHTML = 'please wait ...';
var x=new XMLHttpRequest();
x.open("POST","signup.php",true);
x.setRequestHeader("content-type","application/x-www-form-urlencoded");
x.onreadystatechange=function(){
if(x.readyState == 4 && x.status == 200){
if(x.responseText != "success"){ //this condition is not met at any circumstances
document.getElementById("submitX").style.display = "block";
status.innerHTML="";
//alert(x.responseText);
status.innerHTML = x.responseText;
}
else{
window.scrollTo(0,0);
status.innerHTML ="";
document.getElementById("diff_for").innerHTML = "";
document.getElementById("form1").innerHTML = "";
document.getElementById("form1").innerHTML = "Thank you for creating an account.A Welcome email has been sent to your email.<br/><br/>Go to <a href='login.php'>Login</a>";
}
}
}
x.send("F="+f+"&L="+l+"&E="+e+"&P="+p+"&P2="+p2);
}
}
PHP
if(isset($_POST['F'])){
$firstname=$_POST['F'];
$lastname=$_POST['L'];
$password=$_POST['P'];
$passmatch=$_POST['P2'];
$pass=md5($password);
$email=$_POST['E'];
$sqlx1="SELECT id FROM user_det WHERE email=? LIMIT 1";
mysqli_stmt_prepare($stmt30, $sqlx1);
mysqli_stmt_bind_param($stmt30, "s", $email);
mysqli_stmt_execute($stmt30);
mysqli_stmt_store_result($stmt30);
mysqli_stmt_bind_result($stmt30, $idx1);
$num_row1x=mysqli_stmt_num_rows($stmt30);
if($num_row1x>0){
//ob_end_clean();
//ob_start();
$abul="<br>This email is already registered.Please use another email";
echo $abul;
exit();
}
else{
$sql11x="INSERT INTO user_det(first_name,last_name,password,email,signup_date)
VALUES(?,?,?,?,now())";
mysqli_stmt_prepare($stmt30, $sql11x);
mysqli_stmt_bind_param($stmt30, "ssss", $firstname, $lastname, $pass, $email);
mysqli_stmt_execute($stmt30);
echo "success";
}
非常感谢您的帮助。
感谢您的宝贵时间。
【问题讨论】:
-
返回头文件和相关内容是什么意思。对我来说好像没问题?它与您所写的完全一致。也许我不明白。能否详细解释一下
-
我只需要从
x.responseText获取This email is already taken.......。但是当我使用alert查看响应时,它会返回<html><head><style>.....<div id='bar'></div></head></html><br>This email is already taken.Please use another email。我只需要回显消息,以便我可以执行@987654333 @ 回复文本 -
@CarlSaldanha 我第一次喜欢你。但我现在明白“头文件”是带有“Wagall”之类的黑条。它位于屏幕截图的顶部,然后位于类似手机的部分底部,就在预期消息之前。但我不知道它是从哪里来的……
-
@cFreed 完全正确。你说得对
-
哦。谢谢 cFreed。 @编码器。您是否将任何 PHP 导入到上述代码中,或者是整个文件的代码。您还使用任何 PHP 框架还是纯 PHP
标签: javascript php ajax mysqli