今天主要解决了一个困扰两天的ajax问题,就是关于从服务器获取数据时的同步和异步问题 ,

xhr.open("GET", url,false); 这里有三个参数“GET”表示获取的方式,除了get还有post,head,第二个便是地址这个地址是服务器中的你要获取的文件的地址,这个文件可以是XML也可以是txt,请注意此处是服务器地址,对应到的是tomcat下的目录,例如:var url=http://localhost:8080/wxPay/code.txt;指的是tomcat下webapp下的wxPay下的code.txt的内容,所以你要把服务器的内容放在相应目录下才能被客户端获取,最后一个参数是false 这个是我今天最想说的,就是这个把我推到了坑里,原来我是把它设为true,原先不知道这个是什么意思,后来程序总是出现一个问题就是,js函数的返回值是空的但是如果我在前面加一个alert输出返回的变量那么返回值就正常了但是alert就为空,当时感觉神奇并茫然,后来经过自己调试把问题定位到与服务器交互时出的问题,然后抱着试试看的态度把true改成了false,TMD成功了,正常了,可作为一名优秀的程序员必须得有刨根问底的精神啊不能对了就不管原理了啊,后来抱着愉悦的心情一番查资料,得出是同步和异步的问题,同步简单理解就是一块走,你不走LZ奉陪,我等你,而异步呢,就是可以不一块走,你不走,拉倒,我走先,这样就可以说得通了,与服务器交互分为应该是四个步骤,同步的话就是false时等获取了数据才往下执行,异步的话服务器交互的每一步都可能往下执行,所以可能在未获取服务器数据时就已经往下执行返回的结果当然不是我们想要的。.

看完故事,看代码,

var xhr=false;
var outMsg="";
function makeRequest(){
    if(window.XMLHttpRequest){//该对象存在表示当前浏览器是firefox,opera,safiar,IE7.0,IE8.0中的一个都有这个对象
        xhr=new XMLHttpRequest();    }
    else{
       if(window.ActiveXObject){//IE6.0,5.5中存在的是该对象
        
            try{
                xhr=new ActiveXObject("microsoft.XMLHTTP");
                }
            catch(e){}
        }
    }
    //alert(xhr);
    if(xhr){//如果获得了xml对象
        //alert("getxhr");
        xhr.onreadystatechange=showContents;
        var url="http://localhost:8080/wxPay/code.txt";
        xhr.open("GET", url,false);//请求的方法(get post head) 文件的地址 请求是否异步也就是我们是否会等到请求完成 
        xhr.send(null);
    }
    
    return outMsg;
}
function showContents(){
    //alert(xhr.readyState+"state");
    if(xhr.readyState==4){//响应已经完全被接受
        //alert(xhr.status);
        if(xhr.status==200){//200 表示请求的文件存在 404表示文件不存在
                 outMsg=xhr.responseText;
        }
        
        //return outMsg;
    }
    //alert(outMsg+"outMsg");
}

新手学ajax2的更多相关文章

  1. [ZZ]新手学 appium-合集第一季度

    原文地址: https://testerhome.com/topics/2599 新手学appium-合集第一季度地址如下: 1.新手学 appium-GUI 端搞起来:http://testerho ...

  2. 新手学Java,有哪些入门知识点?

    很多小伙伴们在刚接触Java的时候,会有些迷茫,不知道该从哪里入手,不管是做前端还是后端,程序员都会用到JAVA,那该掌握哪些必要的基础知识呢.今天就跟大家分享新手学Java,有哪些入门知识点? 下面 ...

  3. 新手学js的效果图1---( 淘宝等商城货物查看特效)

    本人结合之前所学一起写了,多个特效,只是新手自己瞎鼓捣的,思路清晰,具体实现的货物放大镜等,替换当中的img地址就可以查看特效 <!DOCTYPE html> <html lang= ...

  4. 新手学逆向,调试abexcm1过程

    写在前面的话:在下完全就是一个新手,现在目前在学16位汇编,偶尔用OD调试看看程序,主要就是为了学习,今天写这个帖子,完全就是笔记用,然后拿出来和大家一起讨论交流. 因为刚开始接触,文章可能一些地方有 ...

  5. 【新手学Python】一、基础篇

    由于以前处理数据用Matlab和C,最近要处理大量文本文件,用C写实在是太繁琐,鉴于Python的强大文本处理能力,以及其在Deep Learning上有着很大优势,本人打算从即日起学习Python, ...

  6. 新手学Android

    Eclipse平台下的新手Android学习记录. 1.打开一个本地的项目 在Project Explorer右键->Import->Existing Projects into Work ...

  7. 新手学vim配置

    我是新手啦,以前都没接触过Vim编辑器,所以感觉不怎么顺手,毕竟还没有用习惯.也没有什么基础,所以在配置的时候就一直在网上查资料....想要把vim编辑器配置成VS的话可以参考这个:http://ww ...

  8. 新手学Unity3d的一些网站及相应学习路线

    一.unity3d有什么优势 如果您对开发游戏感兴趣,而又没有决定选择哪一个游戏引擎,别犹豫了 unity3d是一个很好的选择! 就我来看unity3d优势主要有以下几方面:首先部署简单,自带了一个I ...

  9. 新手学python(1):解析XML与系统调用

    最近需要做一个项目,完成一批音乐的格式转换.由于之前并未学习过python,所以想借此机会学一下.在介绍自己的学习过程之前,先把项目简要描述一下.目前在一台服务器a上有几十万首原始的MP3音乐文件,现 ...

随机推荐

  1. ABAP-DBC录屏

    *&---------------------------------------------------------------------**& ZXXL_MM02_01*& ...

  2. win7上代码连接hadoop出现错误 :org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V

    在idea和eclipse中调试hadoop中hdfs文件,之前好好的,结果突然就出现java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.Na ...

  3. 如何保障Go语言基础代码质量?

    为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...

  4. C#框架学习资料集锦

    1.AllEmpty 的[从零开始编写自己的C#框架]系列 从零开始编写自己的C#框架(1)——前言从零开始编写自己的C#框架(2)——开发前的准备工作从零开始编写自己的C#框架(3)——开发规范从零 ...

  5. 大数据入门第八天——MapReduce详解(四)本地模式运行与join实例

    一.本地模式调试MR程序 1.准备 参考之前随笔的windows开发说明处:http://www.cnblogs.com/jiangbei/p/8366238.html 2.流程 最重要的是设置Loc ...

  6. JavaWeb总结(十)

    Filter配置详解 web项目目录示意图 <!-- Filter配置 --> <filter> <display-name>Filter_one</disp ...

  7. 8-[表操作]--foreign key、表与表的关系

    1. foreign key (1)快速理解foreign key 员工信息表有三个字段:工号 姓名 部门 公司有3个部门,但是有1个亿的员工,那意味着部门这个字段需要重复存储,部门名字越长,越浪费 ...

  8. 13-[CSS]-postion位置:相relative,绝absolute,固fixed,static(默认),z-index

    1.postion位置属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  9. AGC 030 B - Tree Burning

    B - Tree Burning 链接 题意: 一个长度为L的环,有n个位置上有树,从0出发,每次选择一个方向(顺时针或者逆时针),一直走,直到走到一棵树的位置,烧掉这棵树,重复这个过程,直到没有树. ...

  10. Kubernetes学习之路(九)之kubernetes命令式快速创建应用

    1.使用命令kubectl run创建应用 语法: kubectl run NAME --image=image [--env="key=value"] [--port=port] ...