zoukankan      html  css  js  c++  java
  • 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;
    }
    }

  • 相关阅读:
    一个在线的C++帮助文档网站
    linux 学习笔记 (四)
    类的static成员函数和const成员函数
    Linux的inode、软链接、硬链接
    常用linux命令(三)
    多语言调用之 C++ 调用 Java JNI
    多语言调用之 Java调用C/C++
    NHibernate 操作原生SQL以及查询DataTable,DataSet
    DataGridView控件用法合集
    Java AOP实战 寻找SQL的引用路径
  • 原文地址:https://www.cnblogs.com/zgqys1980/p/2718674.html
Copyright © 2011-2022 走看看