今天主要解决了一个困扰两天的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. 用java数组模拟购物商城功能与实现

    实体类1(商品): package mall.model; public class goods { private int shoppingID; // 商品编号 private String sh ...

  2. 【js】走近小程序(2) 常见问题总结

    一.API请求? 二.基础库兼容? 三.不同页面之间的传值   一.API请求? wx.request({ url: 'test.php', // 仅为示例,并非真实的接口地址 data: { x: ...

  3. H5 开发中常见的小问题

    1.解决 浏览器 返回按钮不刷新的问题 window.onpageshow = function(event) { if (event.persisted) { window.location.rel ...

  4. 【转载】WCF 客户端识别认证之UserName认证

    原文地址: http://blog.csdn.net/zxz414644665/article/details/9308055 过程:用户调用service,服务端验证用户传来的用户名和密码(传输过程 ...

  5. 洛谷 P1762 偶数

    洛谷 P1762 偶数 题目描述 给定一个正整数n,请输出杨辉三角形前n行的偶数个数对1000003取模后的结果. 输入输出格式 输入格式: 一个数 输出格式: 结果 输入输出样例 输入样例#1:   ...

  6. 【转载】C++创建对象的两种方法

    原文:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(param ...

  7. 3503: [Cqoi2014]和谐矩阵

    3503: [Cqoi2014]和谐矩阵 链接 分析: 对于每个点,可以列出一个方程a[i][j]=a[i][j-1]^a[i][j+1]^a[i-1][j]^a[i+1][j],于是可以列出n*m个 ...

  8. [原][osgearth]OE地形平整代码解读

    在FlatteningLayer文件的createHeightField函数中:使用的github在2017年1月份的代码 if (!geoms.getComponents().empty()) { ...

  9. 菜鸟vimer成长记——第2.4章、cmd-line模式

    cmd-line模式又有3个类型:Ex 命令(ex commands).查找模式(Search patterns).Filter 命令(Filter commands).本文主要重点的是Ex 命令和S ...

  10. C# string 的一点属性、方法什么的

    今天学的基本可以说是都属于方法和属性 下面这两句话非常重要,确实非常重要 凡是可以  “ . ”     出来的,前面是黑色的小扳手的:属性 紫色的立方体的:方法 这个对于以后自学帮助是不小的,当然, ...