zoukankan      html  css  js  c++  java
  • Ajax温习

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

    GET 还是 POST?

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

    然而,在以下情况中,请使用 POST 请求:

    • 无法使用缓存文件(更新服务器上的文件或数据库)
    • 向服务器发送大量数据(POST 没有数据量限制)
    • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
    • More

    封装ajax()函数,代码如下-----注意window.XMLHttpRequest中的window不能少,否则会出错。XMLHttpRequest相当于window的一个属性

     1 // JavaScript Document
     2 function ajax(url,fnSucc,fnFailed){
     3     //1.创建对象
     4     var oAjax=null;
     5     if(window.XMLHttpRequest){
     6         oAjax=new XMLHttpRequest();    
     7     }    
     8     else{
     9         oAjax=new ActiveXObject("Microsoft.XMLHTTP");    
    10     }    
    11     //alert(oAjax);
    12     //2.连接服务器
    13     //open(请求方式,url,是否异步)
    14     oAjax.open('GET',url,true)
    15     //3.发送请求
    16     oAjax.send();
    17     //4.返回数据
    18     oAjax.onreadystatechange=function(){
    19         if(oAjax.readyState==4){
    20             if(oAjax.status==200){
    21                 //alert("victory"+oAjax.responseText);
    22                 fnSucc(oAjax.responseText);
    23             }    
    24             else{
    25                 if(fnFailed){
    26                     fnFailed();    
    27                 }
    28             }
    29         }    
    30     }
    31 };

    ajax()函数测试版

     1 <!doctype html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 <title>无标题文档</title>
     6 <script>
     7     //用未定义的变量会出错------用未定义的属性undefined
     8     //alert(a);
     9     //alert(window.a);
    10     window.onload=function(){
    11         var oBtn=document.getElementById('btn');
    12         oBtn.onclick=function(){
    13             //1.创建对象
    14             var oAjax=null;
    15             if(window.XMLHttpRequest){
    16                 oAjax=new XMLHttpRequest();    
    17             }    
    18             else{
    19                 oAjax=new ActiveXObject("Microsoft.XMLHTTP");    
    20             }    
    21             //alert(oAjax);
    22             //2.连接服务器
    23             //open(请求方式,url,是否异步)
    24             oAjax.open('GET','abc.txt',true)
    25             //3.发送请求
    26             oAjax.send();
    27             //4.返回数据
    28             oAjax.onreadystatechange=function(){
    29                 if(oAjax.readyState==4){
    30                     if(oAjax.status==200){
    31                         alert("victory"+oAjax.responseText);
    32                     }    
    33                     else{
    34                         alert("defeat!");    
    35                     }
    36                 }    
    37             }
    38         };
    39     }
    40     
    41 </script>
    42 </head>
    43 
    44 <body>
    45 <input type="button" id="btn" value="create">
    46 </body>
    47 </html>
    View Code

    实例1-----案例的文件都在服务器端www目录下,在本地PC安装WAMP程序即可。

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>Untitled Document</title>
     6 <script src="ajax.js"></script>
     7 <script>
     8     window.onload=function(){
     9         var oBtn=document.getElementById('btn1');
    10         oBtn.onclick=function(){
    11             ajax("one.txt",function(str){
    12                 alert(str);
    13             })
    14         }
    15     }
    16 </script>
    17 </head>
    18 
    19 <body>
    20 <input type="button" id="btn1" value="readme">
    21 </body>
    22 </html>

    实例2-----清除缓存。

     1 <html>
     2 <head>
     3     <title></title>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     5     <style type="text/css">
     6         #div1{width:400px;height:300px;border:1px solid #333;}
     7     </style>
     8     <script src="ajax.js"></script>
     9     <script type="text/javascript">
    10         window.onload=function(){
    11             var oBtn=document.getElementsByTagName('input');
    12             var oDiv=document.getElementById('div1');
    13             for (var i = 0; i < oBtn.length; i++) {
    14                 oBtn[i].index=i;
    15                 oBtn[i].onclick=function(){
    16                     //缓存问题,获取1970到现在的毫秒数
    17                     ajax(this.index+1+'.txt?t='+new Date().getTime(),function(str){
    18                         oDiv.innerHTML=str;
    19                     })
    20                 }
    21             };
    22         }
    23     </script>
    24 </head>
    25 <body>
    26 <input type="button" id="btn1"    value="button1">
    27 <input type="button" id="btn2"    value="button2">
    28 <input type="button" id="btn3"    value="button3">
    29 <div id="div1">
    30 
    31 </div>
    32 </body>
    33 </html>

    实例3-----读取文件里的数组

     1 <html>
     2 <head>
     3     <title></title>
     4     <script src="ajax.js"></script>
     5     <script type="text/javascript">
     6         window.onload=function(){
     7             var oBtn=document.getElementById('btn1');
     8             oBtn.onclick=function(){
     9                 ajax('arr.txt',function(str){
    10                     var arr=eval(str);
    11                     alert(arr[0]);
    12                 })
    13             };
    14         };
    15     </script>
    16 </head>
    17 <body>
    18     读取静态数组文件
    19     <input type="button" id="btn1" value="readtxt">
    20 </body>
    21 </html>

    eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。eval知识详解

    实例4-----读取文件,实现分页

     1 <html>
     2 <head>
     3     <title></title>
     4     <script src="ajax.js"></script>
     5     <script>
     6         window.onload=function(){
     7             var oUl=document.getElementById('ul1');
     8             var a=document.getElementsByTagName('a');
     9 
    10             for (var i = 0; i < a.length; i++) {
    11                 a[i].index=i;
    12                 a[i].onclick=function(){
    13                     ajax('page'+(this.index+1)+'.txt',function(str){
    14                         var arr=eval(str);
    15                         
    16                         oUl.innerHTML='';
    17                         for (var i = 0; i < arr.length; i++) {
    18                             var oLi=document.createElement('li');
    19                             oLi.innerHTML='<strong>'+arr[i].user+'</strong>'+'<h6>'+arr[i].pass+'</h6>';
    20                             oUl.appendChild(oLi);
    21                         };
    22                     })
    23                 }
    24             };
    25         }
    26     </script>
    27 </head>
    28 <body>
    29     <ul id="ul1"></ul>
    30 <a href="javascript:;">1</a>
    31 <a href="javascript:;">2</a>
    32 <a href="javascript:;">3</a>
    33 </body>
    34 </html>
    念念不忘,必有回响。
  • 相关阅读:
    node错误: primordials is not defined
    单片机TTL转RS232模块DB9数据线接口排针接口多接口方便连接
    单片机串口自适应电平5V TTL电平兼容转换3.3V电平串口转换NMOS管
    USB串口转RS485转换器工业级usb串口转RS485模块转换器串口通讯
    Kafka丢数据、重复消费、顺序消费的问题
    纪念第一次做的拉花拿铁
    《奢侈的理由》总结
    【算法框架套路】回溯算法(暴力穷举的艺术)
    svg中矩形旋转问题
    性能测试工具集锦
  • 原文地址:https://www.cnblogs.com/paxster/p/3539827.html
Copyright © 2011-2022 走看看