首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ajax进行预注册检查,然后重定向到适当的页面。

使用ajax进行预注册检查,然后重定向到适当的页面。
EN

Stack Overflow用户
提问于 2013-07-26 18:51:43
回答 2查看 292关注 0票数 0

我有一个我的网站注册表格,要求用户填写~6个字段,他们的电子邮件作为他们的用户名在系统上。当用户注册时,我想首先检查他们是否已经是我们系统中的注册用户,如果是的话,将他们重定向到登录页面。如果他们没有登记,登记应继续到登记页。

我一直试图用下面的ajax代码来完成这个任务,但是它不起作用--如果用户已经注册了,它仍然继续到注册页面:

代码语言:javascript
复制
function Chkreg()
{   
    var uemail = document.registration.email;  
var not_reg;

$.ajax({
    async: false,
        type: "POST",
        url: "chkreg.php",
        data : "email="+uemail.value,
        dataType: "json",
        success: function (data) {
            var success = data['success'];
            if(success == false){
                var error = data['message'];
                alert(error);
                window.location.href="login.php";
                not_reg = false;
                return false;
            }
            if(success == true) {
                not_reg = true;
                return true; 
            }
        }
    });//end ajax
    return not_reg:;
}//end  function

表格本身的定义如下:

代码语言:javascript
复制
`<form name='registration' method="POST" action="registration/register.php" onsubmit="return Chkreg();">`

因此,Chkreg函数的错误返回不应该发布到register.php,但是Chkreg()似乎总是返回true。

有什么办法解决这个问题吗?或者另一种解决办法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-26 19:27:56

因为您正在使用异步: false执行ajax调用,所以不需要在其中返回true或返回false。这可能是事情出错的地方,因为您是从ajax调用中的匿名函数返回的,而不是Chkreg()。只需在ajax调用之外返回not_reg即可。

这就是说,在初始化var时,我会声明not_reg = false。这样在被证明是真的之前都是假的。或者--反之亦然--我不知道,因为变量名中的否定。

此外,在您的(成功== false) if-块内部,您正在执行

代码语言:javascript
复制
window.location.href = "login.php";

它立即将用户重定向到login.php。您可能希望完全更改流,并更改窗体onsubmit事件的内联js。

代码语言:javascript
复制
onsubmit="Chkreg(); return false;"

然后,在Chkreg()内部,如果不是注册用户,可以使用javascript提交表单。

此外,===和!==比==和!=更可取(特别是在确定变量为true或false时,如果您的值可以被解释为真实的话)。

最后,开发工具是您的朋友(或者Firebug)。当请求chkreg.php时,服务器会给出什么响应?

票数 0
EN

Stack Overflow用户

发布于 2013-07-26 19:27:46

检查使用firebug (或您的浏览器开发工具包)的实际响应是什么,....I将是您想要的

代码语言:javascript
复制
if (success == "false") {
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17888860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档