今天主要解决了一个困扰两天的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. AWVS使用手册

    目录: 0×00.什么是Acunetix Web Vulnarability Scanner ( What is AWVS?) 0×01.AWVS安装过程.主要文件介绍.界面简介.主要操作区域简介(I ...

  2. 基于VHDL的8255可编程并行接口电路设计

    一.实验题目名称: 8255可编程并行接口电路设计 二.实验目的.任务和要求: 实验目的:学习掌握基本的数字系统设计方法,建立自顶向下的设计思维,能够使用VHDL语言编写简单的应用IP核,掌握基本的F ...

  3. C++_编写动态链接库

    原文:http://blog.csdn.net/a7055117a/article/details/47733247 动态链接库简介 动态链接库(Dynamic Link Library 或者 Dyn ...

  4. 成都Uber优步司机奖励政策(4月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. 一维码Code 93简介及其解码实现(zxing-cpp)

    一维码Code 93: Code 93码与Code 39码的字符集相同,但93码的密度要比39码高,因而在面积不足的情况下,可以用93码代替39码.它没有自校验功能,为了确保数据安全性,采用了双校验字 ...

  6. 12 stark组件之pop,按钮,url,页面

    1.Window open() 方法 http://www.runoob.com/jsref/met-win-open.html 效果图   2.admin的pop添加按钮 3.stark之pop功能 ...

  7. 【FJOI2016】建筑师

    安利另外一篇\(blog\) 密码泥萌都知道 题面 题解 为了描述方便,这里将建筑称作\(zsy\) 高度为\(n\)的\(zsy\)无论如何都能从左右两侧看到.剩下的部分,从左边看到的是前缀\(ma ...

  8. iOS开发者证书-详解

    iOS开发者证书-详解/生成/使用 本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密 ...

  9. cogs1772 [国家集训队2010]小Z的袜子

    沉迷于文化的我N年没更blog了...(\(N \in (0,1)\)) 然后回到机房就沉迷于 \(generals.io\) 无法自拔...QAQ 然后想打一遍splay(然后是LCT),然后放弃了 ...

  10. java面试资源(面试题、面试经验等)

    两年JAVA程序员的面试总结 https://www.cnblogs.com/xuwujing/p/7613084.html 2018JAVA面试题附答案(长期更新) https://blog.csd ...