zoukankan      html  css  js  c++  java
  • jquery中的get和post、ajax有关返回值的问题描述

         一:前言

        今天我就要离开公司回学校准备考试,在走之前,我自己做的一个模块测试除了一些小的bug。问题如下

          我在往数据库中插入数据,首先要选择一级菜单,接着会更具一级菜单生成一级菜单的子目录,在选择日期。填完数据后进行保存操作。在点击保存时需要对新增的数据进行验证,就是根据一级目录的编号和日期来进行查询,如果有的话就要弹出一个提示框,告诉其其中已经有了改目录该日期的数据。在这里我就需要进行验证。但是我在用jquery.get方法来写时怎么都没有用。而此时我又快下班走人了,弄得我很烦躁,最后还是一个老大哥来帮我解决这个问题。

    二:问题代码:

    function checkForm(){
       
       $.get("url",{'参数1':a,'参数2':b},function(data){
             if("success"==data){//返回success表示数据库中有改数据,所以该返回false
                  showTips("数据库中已经有该数据,如需要请查找进行更改");
                   return false;
    }
    });
    
    return true;
    }

    我这里的代码怎么执行,返回的都是true,也就是说我每次都是执行插入操作。这个验证基本没有用处。

    所以我用IE和火狐的浏览器进行调试都没用,也没报错误。快下班之前,找到了一个其他公司的老大哥(我是在外面驻点的,好几家公司在一起),他看了一会,就是这个是异步与同步造成的,刚刚开始我不相信,因为代码执行到return哪里基本就没反应了,我怎么都不会想到是异步或者是同步造成的。老大哥说这需要用ajax,指定为同步,因为jquery的post和get都是异步的。最后我们对代码进行了更改如下:

    function checkForm(){
       var flag=true;
         $.ajax({url:"/xxx/xxx.do"},data:{'参数1':a,'参数2':'b'},async:false,success:function(data){
             if("success"==data){
             flag=fasle;
    }
    });
    if(flag==false){
       showTips("XXXXXX");
      return false;
    }
    
    }

    其实这代码一进行对比,就知道是同步和异步的区别,刚刚在网上也查了下资料说法如下:如果是异步的话,还没来得及赋值,就已经return了。而同步的话就是说ajax有了返回值后才会执行下面的代码。其实这些应该也是。

    我现在自己的理解就是知道用同步的话会有返回值,二用异步的话返回不了,在异步代码中,return的话只有返回到function(data)外,但是还是在$.get("","",function(data))里面,根本就没有跳出方法外。这是我自己一点理解。

    三:总结

       自己的IT路踩刚刚开始,也要学会能帮助别人,就像那个老大哥样,他给了我很大的帮助,我问了他很多问题,他的经验很丰富。好人有好报的,希望在以后的IT路上,能有更多的有经验的人可以給我们这写菜鸟帮助。前段时间在一个qq群上群主和一些其他朋友也给我了很大的帮助。自己的路还很长。努力,加油啊。走了,明天回学校准备期末考试了,今年大三,明年大四,希望在这段时间能充实自己,为自己以后出来打下坚实的基础

  • 相关阅读:
    奉上简单的.Net后端开发模板
    C#之委托如此简单
    cordova环境搭建
    Linux实现免密码登录
    RHEL7网络管理NetworkManager和nmcli指令
    RHEL7中配置本地YUM软件源
    RHEL7 网口绑定Network Teaming
    Linux工具之top
    Linux工具之ss
    linux工具之lsof
  • 原文地址:https://www.cnblogs.com/wuhao1991/p/3773244.html
Copyright © 2011-2022 走看看