• 【06】对AJAX的总结(转)


    对AJAX的总结

     
    通过前面对 AJAX 的讲解,我们可以将 AJAX 请求分成以下几个步骤:
    • 创建 XMLHttpRequest 对象;
    • 设置事件处理函数,处理返回的数据;
    • 初始化并发送请求。

    可以将 AJAX 请求概括为一段固定的代码:
    1. <script type="text/javascript">
    2. var xmlhttp;// XMLHttpRequest 对象
    3. try{// code for IE7+, Firefox, Chrome, Opera, Safari
    4. xmlhttp=newXMLHttpRequest();
    5. }catch(e){// code for IE6, IE5
    6. xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
    7. }
    8. xmlhttp.onreadystatechange=function(){// 事件处理函数
    9. if(xmlhttp.readyState==4&& xmlhttp.status==200){
    10. // 这里写你的代码,可以使用 responseText 接收返回的数据
    11. }
    12. }
    13. xmlhttp.open(POST/GET,url,true);// 选择发送方式,确定 url
    14. xmlhttp.send(data);// POST 方式发送的数据,GET 方式留空
    15. </script>
     

    GET 还是 POST

    与 POST 相比,GET 更简单也更快,在大部分情况下都能用。

    然而,在以下情况中,请使用 POST 请求:
    • 无法使用缓存文件(更新服务器上的文件或数据库);
    • 向服务器发送大量数据(POST 没有数据量限制);
    • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠。
     

    GET 请求

    一个简单的 GET 请求:

    1. xmlhttp.open("GET","demo_get.asp",true);
    2. xmlhttp.send();
     

     

    在上面的例子中,您可能得到的是缓存的结果。

    为了避免这种情况,请向 URL 添加一个唯一的 ID:

    1. xmlhttp.open("GET","demo_get.asp?t="+Math.random(),true);
    2. xmlhttp.send();
     

     

    如果您希望通过 GET 方法发送信息,请向 URL 添加信息:

    1. xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);
    2. xmlhttp.send();
     

     

    POST 请求

    一个简单 POST 请求:

    1. xmlhttp.open("POST","demo_post.asp",true);
    2. xmlhttp.send();
     

     

    如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:

    1. xmlhttp.open("POST","ajax_test.asp",true);
    2. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    3. xmlhttp.send("fname=Bill&lname=Gates");
     

     

    方法

    描述

    setRequestHeader(header,value)

    向请求添加 HTTP 头。

    · header: 规定头的名称

    · value: 规定头的值

     

    是否异步请求

    对于 open() 方法:
        open(method,url,async)
    async 为 true 或 false。

    async=true 时,JavaScript 无需等待服务器的响应,可以在等待服务器响应的同时执行其他脚本,当响应完成后再对返回的数据进行处理,所以,AJAX 请求与其他脚本的执行是分开的,互不影响。

    async=false 时,JavaScript 会等到服务器响应完成后才继续执行其他脚本,如果服务器繁忙或缓慢,JavaScript 会一直等待,可能会挂起或停止。这种方式只适用于一些小而简单的请求。


    AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML),对于 web 开发人员来说,发送异步请求是一个巨大的进步,能在很大程度上减少服务器的开销,提高客户端脚本的执行速度。AJAX 重在“异步”,如果 async=false ,AJAX 就是去了意义。所以,如无特殊要求,一般是 async=true ,既能充分发挥 AJAX 的作用,也不会遇到莫名其妙的错误。
     

    使用回调函数

    回调函数是一种以参数形式传递给另一个函数的函数。

    如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。

    该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):

     

     

    1. function myFunction()
    2. {
    3. loadXMLDoc("ajax_info.txt",function()
    4. {
    5. if(xmlhttp.readyState==4&& xmlhttp.status==200)
    6. {
    7. document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    8. }
    9. });
    10. }



     

  • 相关阅读:
    使用VMWare实现主机一拖二(笔记本分身术)
    Implementing RelativeSource binding in Silverlight
    CLRProfiler V4 Released
    Host WCF on IIS 7.5
    增加智能感知的RichTextBox扩展控件(WPF)
    Troubleshooting Visual Studio 2010 and QT 4.7 Integration
    windows命令行下如何查看磁盘空间大小
    模拟谷歌今日使用的css动画
    粗聊Mysql——你会建库建表么?
    彩票项目难点分析
  • 原文地址:https://www.cnblogs.com/moyuling/p/5272498.html
Copyright © 2020-2023  润新知