0

在从我的服务器请求数据时遇到多个问题后,我发布了这个问题。从来没有让那个代码工作,所以我最终重写了整个 ajax 请求,现在我可以在数据库中插入数据。

但是,我现在遇到的问题是发送回我的 ajax 请求的 responseText 没有更新我的 html。

在我的注册脚本结束时,在所有值都插入数据库之后,我有这段代码用于测试以确保注册电子邮件已发送给用户并将字符串发送回 ajax 请求:

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 语句。

我究竟做错了什么?

4

1 回答 1

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";
        }
    }
}
于 2013-09-03T21:14:04.977 回答