今天主要解决了一个困扰两天的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. javascript中的属性注意事项

    1.函数原型prototype设置的对象是只读类型,所以不能修改(即栈只读).但是我们常常可以看到它被“修改‘’了.若对象中定义的属性和原型中属性一样,优先使用自定义属性. 例如代码: //原型 类似 ...

  2. ThinkPhp5学习之新手博客

    前端框架来源网络,后端框架采用 ThinkPhp 5 开发 参考资料:哔哩哔哩  ThinkPHP5.1新手博客项目实战 项目地址:https://github.com/yjy1/tp5

  3. 基于Jq的手写插件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  4. android6.0系统Healthd分析及低电量自动关机流程

    系统平台:android6.0概述Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework层的BatteryServic ...

  5. adb devices报错解决

    1. 执行adb device报错如下 2. 报错原因及解决办法 报错时开启了Androidkiller,关闭即解决问题 可能原因:adb命令被占用冲突了

  6. 链接SQLServer数据库 导出csv文件

    依赖::::<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>ms ...

  7. Caffe中Layer注册机制

    Caffe内部维护一个注册表用于查找特定Layer对应的工厂函数(Layer Factory的设计用到了设计模式里的工厂模式).Caffe的Layer注册表是一组键值对(key, value)( La ...

  8. 用 Python 给程序加个进度条,让你的看起来更炫酷?

    对于开发或者运维来说,使用 Python 去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效地监控任务的进度?除了在任务中加上 Log 外,还能不能有另一种方式来了解任务进展到哪一步 ...

  9. gh-ost的延迟控制机制

    root@sbtest04:46:19>select * from _yougege_ghc limit 10\G*************************** 1. row ***** ...

  10. C#英文数字混合验证

    日常可见的验证码,当然不会这么简单,不过算是基本验证码中比较经典的,可以做一点参考,欢迎有更好方法的大哥们指正 using System; using System.Collections.Gener ...