首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(本机JAVASCRIPT) - ajax请求的函数没有提供响应

(本机JAVASCRIPT) - ajax请求的函数没有提供响应
EN

Stack Overflow用户
提问于 2015-07-02 01:22:06
回答 1查看 284关注 0票数 0

我目前正在一个模块中工作,在这个模块中,用户将注册,下面将提到的方法将检查注册人的电子邮件是否已经在使用中。

为什么带有ajax请求的函数不向ajax请求的其他函数返回任何值?顺便说一句,我没有使用任何javascript框架,比如jquery,只是一个普通的原生javascript ;)

顺便提一下,下面是代码^_^ --注意: XMLHttpRequest()已经可以了。(与此无关:)

代码语言:javascript
复制
function checkEmailExistense(email){
    var url = "library/functions.php?action=emailchecker&emailadd=" + email;

http.onreadystatechange = function(){
    if (http.status == 200 && (http.readyState === 4)){
        var res = http.responseText;
        if (res == "Invalid") {
            return 0;
        }
    }
}

http.open("GET", url , true);
http.send();

}

在另一个javascript函数中,我有一个ajax请求注册,我有一个if语句来检查上面函数的返回值是否为0;

代码语言:javascript
复制
var emailaddress = document.getElementById("emailadd").value;

if (checkEmailExistense(emailaddress) == 0){
        errorcount+=1;
        errorstatement+="Email already exist";
    }

我的php查询没有问题,但这是我的代码;)

代码语言:javascript
复制
$action = $_GET['action'];
switch ($action){
    case 'emailchecker':
        checkTheEmailAdd();
    break;
}

function checkTheEmailAdd(){
    $email = $_GET['emailadd'];

    $connection = new connection();
    $realconnection = $connection->connect();

    $getCount = mysqli_query($realconnection, "SELECT user_email FROM tbl_user WHERE user_email = '".$email."'");


    if(mysqli_num_rows($getCount) > 0){
        echo "Invalid";
    }

}

期待着一些答案。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 01:33:40

Ajax调用是异步的。所以你正在检查一些还没有的东西。但是,即使不是异步的,onreadstatechange处理程序中的返回语句也不会影响checkEmailExistense方法。

相反,使用一个回调,该回调在请求返回数据后立即调用:

代码语言:javascript
复制
function checkEmailExistense(email, callback){
    var url = "library/functions.php?action=emailchecker&emailadd=" + email;

    http.onreadystatechange = function(){
        if (http.status == 200 && (http.readyState === 4)){
            var res = http.responseText;
            if (res == "Invalid") {
                callback(0);
            } else {
                callback(1);
            }
        }
    }

    http.open("GET", url , true);
    http.send();
}

并检查:

代码语言:javascript
复制
var emailaddress = document.getElementById("emailadd").value;

checkEmailExistense(emailaddress, function(success) {
    if(success === 0) {
        errorcount+=1;
        errorstatement+="Email already exist";
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31174240

复制
相关文章

相似问题

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