Ajax基本知识

什么是ajax?
  1. asynchronous javascript and xml,直译中文-javascript和xml的异步
  1. AJAX是一种用来改善用户体验的技术,其实质是,使用XMLHttpRequest对象异步地向服务器发请求
  1. 服务器返回部分数据,而不是一个完整的页面,以页面无刷新的效果更改页面中的局部内容
  1. Ajax的核心对象
`  XMLHttpRequerst对象`
  1. 获取XMLHttpRequest对象
     function getXhr(){

         var xhr = null;
         if(window.XMLHttpRequest){
             //除IE外的其他浏览器
             xhr = new XMLHttpRequest();
         }else{
             
             xhr = new ActiveXObject("Microsoft.XMLHttp");

         }

         return xhr;
     }
        ```

  6. 属性
       
       1) readyState 请求状态

         0 尚未初始化
         1正在发送请求
         2请求完成
         3请求成功,正在接受数据
         4数据接收成功
       2) status 请求响应值
    
         200 表示请求成功
         202 请求被接受但处理未完成
         400 错误的请求
         404 资源未找到
         500 内部服务器错误,如asp代码错误等

       3) responseText 服务器返回的文本

       4) responseXML 服务器返回的xml,可以当做DOM处理

  7. 方法
  open(method,url) - 与服务端建立连接

  send() - 向服务器端发送请求

  abort() - 取消请求

  getAllResponseHeaders()
    得到响应的所有http头

  getResponseHeader() 
    获取指定的http头

  setRequestHeader()
    指定请求的Http头
  8. 事件
  onreadystatechange事件
  作用 - 监听服务端的通信状态改变

    当Ajax对象的readyState的值发生了改变,比如,从0变成了1,就会产生readystatechange事件
三、实现ajax的异步交互步骤

  1. 创建XMLHttpRequest核心对象
    固定写法-独立编写

  2. 与服务区建立连接
    使用XMLHttpRequest对象的open(method,url)

  3. 向服务器发送请求
    使用XMLRequest对象的send()方法
    请求参数的格式 - key=value

  4. 接受服务器响应的数据

    使用XMLHttpRequest对象的readystatechange事件监听服务器端的通信状态

    使用XMLHttpRequest对象的readyState属性,判断服务器端当前状态(0-4)

    使用XMLHttpRequest对象的statue属性,判断服务器端的状态码(200)

    使用XMLHttp对象的responseText属性,接受服务器端的响应数据

   注意:get与post方式
  get请求方式

    send()方法不起作用,但是不能被省略
    xhr.send(null) 请求参数,添加到url?key=value
     
  post请求方式

    必须要在send()方法调用之前,使用setRequestHeader()方法设置请求头,参数为key-value

    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
实例:如图所示将在input框里面输入,然后将输入的文本提交到下面的div中

![ajax异步交互的基本步骤](http://upload-images.jianshu.io/upload_images/3132360-d3e36b55370860e2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">
div{
width:100px;
height:100px;
border: 1px solid black;
}
</style>
<body>

        <input type="text" name="user" id="user" value="" /><br/>
        <button id="tijiao">提交</button>
    
    
    <div id="content">
        
    </div>
<script type="text/javascript">
document.getElementById("tijiao").onclick=function  () {
    //将input中的内容异步提交到服务器,然后将服务器响应回来的数据放在div里面
    //1.创建ajax对象
    var xhr=getXhr();
    //2.跟服务器建立连接, open还可以设置第三个boolean参数,可以设置同步还是异步交互,默认为true,为异步交互。现在ajax已经慢慢放弃弃用同步
    //使用GET提交数据,需要将参数拼到url的后面,并且发送时设置发送内容为null
    var input=document.getElementById("user");
    xhr.open("GET","myphp01.php?username="+input.value);
    
    //3.发送数据 格式为key=value,多个参数用&隔开
    
    xhr.send(null);
    //4.监听服务器的响应
    xhr.onreadystatechange=function  () {
        //将响应的内容放在div里面
        if(xhr.readyState==4&&xhr.status==200){//当数据接收完毕,以及请求成功时,做处理
            document.getElementById("content").innerHTML=xhr.responseText;
        }
        
    }
    
    //创建ajax对象
    function getXhr () {
        var xhr=null;//设置一个空变量
        if(window.XMLHttpRequest){//判断是否支持XMLHttpRequest
            xhr=new XMLHttpRequest();
        }else{//ie不支持
            xhr=new  ActiveXObject("Microsoft.XMLHttp");
        }
        return xhr;
    }
}
    
    
</script>
</body>

</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容