• jquery ajax 无法获取返回值问题 dodo


    最近在做会员注册这块。用了jquery的 ajax 验证用户名。邮箱,验证码

    function check_email()
    {
    var check_email = $("#reg_mail").val();
    var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((/.[a-zA-Z0-9_-]{2,3}){1,2})$/;
    flag = reg.test(check_email);
    if(flag)
    {
    var email_value = $('#reg_mail').val();
    $.get("[var.base_url]register.php",{check_name:"email",check_value:email_value,async:false},function(json){
    //$('#res_mail').html(json);
    if(json == "ok")
    {
    $('#res_mail').html("<font color='green' font-size='12'><b>此email可以注册!</b></font>");
    return true;
    }else{
    $('#res_mail').html("<font color='red' font-size='12'><b>此email已被注册!</b></font>");
    return false;
    }
    });
    }else{
    $("#res_mail").html("<font color='red' font-size='12'><b>请输入正确的邮箱地址!</b></font>");
    return false;
    }
    }

    开始是这么写的。 可是总是无法获取到返回的状态true 或false 返回一个undefined 查了很多资料。csdn上的一个帖子很经典:

    var boolean = false;
    $.get(url,null,function(data)
    {//理解这个不难,只要你先知道jquery中的方法返回的都是jquery的对象或jquery指定的对象。
    //jquery的get、post等ajax方法默认是异步交互方式,所以在get方法还没有执行完成的时候就已经return了,这时的bl就是你定义的bl = false;所以一直返回false;改成同步的应该有值了
    //所以要想放回bl的正确值,你得改下get方法。一般不在ajax方法中做返回值处理。
    //可以用$.data("bl", bl);保存你的值,然后用$.data("bl")取值。
    if(data.indexOf("true")>=0){
    $("#mid").html("登陆成功");
    bl = true;
    $.data("bl", bl);
    }
    else
    {
    $("#mid").html("用户名或密码错误");

    bl = false;
    $.data("bl", bl);
    }
    });
    return bl;

    这样就可以获取到返回的状态了。用data方法 存储 值。然后获取。还有一个方法就是

    $.get(url,{async: false},function(data) 设置传输方式为同步传输

    最终修改函数如下。 测试ok。

    function check_email()
    {
    var check_email = $("#reg_mail").val();
    var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((/.[a-zA-Z0-9_-]{2,3}){1,2})$/;
    flag = reg.test(check_email);
    if(flag)
    {
    var email_value = $('#reg_mail').val();
    $.get("[var.base_url]register.php",{check_name:"email",check_value:email_value,async:false},function(json){
    //$('#res_mail').html(json);
    if(json == "ok")
    {
    $('#res_mail').html("<font color='green' font-size='12'><b>此email可以注册!</b></font>");
    tamp_email = true;
    $.data("tamp_email",tamp_email);
    //$('#sub_reg').attr("disabled", false);
    }else{
    $('#res_mail').html("<font color='red' font-size='12'><b>此email已被注册!</b></font>");
    tamp_email = false;
    $.data("tamp_email",tamp_email);
    //$('#sub_reg').attr("disabled", true);
    }
    });
    return tamp_email;
    }else{
    $("#res_mail").html("<font color='red' font-size='12'><b>请输入正确的邮箱地址!</b></font>");
    return false;
    }
    }

  • 相关阅读:
    top 命令
    通过公网访问内网的几种方式总结
    借助IDE到处Runnable JAR 的步骤
    Java SE 基础知识(String,Array)
    Java SE 基础知识(二)
    周记 2014.12.13
    nginx 总结
    在VPS上配置SS
    Markdown 语法手册
    ASCII码表
  • 原文地址:https://www.cnblogs.com/zgqys1980/p/2718674.html
Copyright © 2020-2023  润新知