在从我的服务器请求数据有多个问题后,我发布了this question。从来没有让代码工作,所以我最终重写了整个ajax请求,现在我可以在数据库中插入数据。
但是,我现在遇到的问题是发送回我的ajax请求的responseText没有更新我的html。
在我的注册脚本结束时,在将所有值插入数据库之后,我有这个代码进行测试以确保注册电子邮件已发送给用户并将字符串发送回ajax请求:< / p>
if (mail($to, $subject, $message, $headers)) {
echo "email_success";
exit;
} else {
echo "email_failure";
exit;
}
收到回复后,我有这个条件来测试返回的字符串:
hr.onreadystatechange = function() {
if (hr.readyState == 4 && hr.status == 200) {
if (hr.responseText == "email_success") {
window.scrollTo(0,0);
gebi("signupform").innerHTML = "<p>Sign up successful. Check you email to activate you account.</p>";
} else {
gebi("status").innerHTML = hr.responseText;
gebi("signupbtn").style.display = "block";
}
}
}
我遇到的问题是"signup_success"
字符串未被识别为true
,而是触发此else语句。
我做错了什么?
答案 0 :(得分:0)
可能您的错误是在进行比较之前必须修剪响应文本。
修剪代码:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, '');
};
}
然后
hr.onreadystatechange = function() {
if (hr.readyState == 4 && hr.status == 200) {
var responseText = hr.responseText.trim();
if (responseText == "email_success") {
window.scrollTo(0,0);
gebi("signupform").innerHTML = "<p>Sign up successful. Check you email to activate you account.</p>";
} else {
gebi("status").innerHTML = hr.responseText;
gebi("signupbtn").style.display = "block";
}
}
}