zoukankan      html  css  js  c++  java
  • AJAX获取服务器文件

    写一个按钮,点击后在指定的div里显示本地txt文件内容

    在本地新建一个test.txt,里面随便写点内容就好。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8" />
     5     </head>
     6     <body>
     7         <input type="button" id="btn_test" value="test" onclick="javascript:testAjax('test.txt');" />
     8         <br /><br />
     9         <div id="testDiv">Hello,World!</div>
    10         
    11         <script>
    12             function testAjax(request_url){
    13                 var xmlhttp = null;
    14                 try{
    15                     var xmlhttp = new XMLHttpRequest();
    16                 }catch(e){
    17                     try{
    18                         var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    19                     }catch(e){
    20                         alert("Your browser is not support AJAX");
    21                     }
    22                 }
    23                 
    24                 if (xmlhttp){
    25                     xmlhttp.open("GET",request_url,true);
    26                     xmlhttp.onreadystatechange = function (){
    27                         if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
    28                             document.getElementById("testDiv").innerHTML = xmlhttp.responseText;
    29                         }
    30                     };
    31                     xmlhttp.send(null);
    32                 }else{
    33                     alert("Error");
    34                 }
    35             }
    36         </script>
    37     </body>
    38 </html>

    也可以把readystatechange的事件处理句柄单独写成一个方法,注意xmlhttp要写成全局变量。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8" />
     5     </head>
     6     <body>
     7         
     8         <input type="button" id="btn_test" value="test" onclick="javascript:testAjax('test.txt');" />
     9         <br /><br />
    10         <div id="testDiv">Hello,World!</div>
    11         
    12         <script>
    13             var xmlhttp = null;
    14             
    15             function readyStateChangeHandler(){
    16                 if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
    17                     document.getElementById("testDiv").innerHTML = xmlhttp.responseText;
    18                 }
    19             }
    20             
    21             function testAjax(request_url){
    22                 try{
    23                     xmlhttp = new XMLHttpRequest();
    24                 }catch(e){
    25                     try{
    26                         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    27                     }catch(e){
    28                         alert("Your browser is not support AJAX");
    29                     }
    30                 }
    31                 
    32                 if (xmlhttp){
    33                     xmlhttp.open("GET",request_url,true);
    34                     xmlhttp.onreadystatechange = readyStateChangeHandler;
    35                     xmlhttp.send(null);
    36                 }else{
    37                     alert("Error");
    38                 }
    39             }
    40         </script>
    41     </body>
    42 </html>

    获取XML文件的方法有点不太一样,思路是一致的,只不过具体读取response会用到一些特殊的方法

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8" />
     5     </head>
     6     <body>
     7         
     8         <input type="button" id="btn_test" value="test" onclick="javascript:testAjax();" />
     9         <br /><br />
    10         <div id="testDiv">Hello,World!</div>
    11         
    12         <script>
    13             var xmlhttp = null;
    14             var testDiv = document.getElementById("testDiv");
    15             
    16             function readyStateChangeHandler(){
    17                 if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
    18                     var xmlDOM = xmlhttp.responseXML;
    19                     //拿到response后要解析出XML的根节点
    20                     var xmlRoot = xmlDOM.documentElement;
    21                     try{
    22                         //Tag Name视具体需求而定,要和后端人员商量好。
    23                         var xmlItem = xmlRoot.getElementsByTagName("item");
    24                         for(var i=0;i<xmlItem.length;i++){
    25                             //具体怎么拿item里面的内容还需要根据数据结构来定
    26                             testDiv.innerHTML += xmlItem[i].innerHTML;
    27                         }
    28                     }catch(e){
    29                         alert(e.message);
    30                     }
    31                 }
    32             }
    33             
    34             function testAjax(){
    35                 try{
    36                     xmlhttp = new XMLHttpRequest();
    37                 }catch(e){
    38                     try{
    39                         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    40                     }catch(e){
    41                         alert("Your browser is not support AJAX");
    42                     }
    43                 }
    44                 
    45                 if (xmlhttp){
    46                     xmlhttp.open("GET","test.xml",true);
    47                     xmlhttp.onreadystatechange = readyStateChangeHandler;
    48                     xmlhttp.send(null);
    49                 }else{
    50                     alert("Error");
    51                 }
    52             }
    53         </script>
    54     </body>
    55 </html>

    test.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
        <item>This is a XML test!</item>
        <item>Ajax is very useful!</item>
    </root>

    可以看到每一项item的结构远比xml文件复杂,具体怎么取值还要和后端人员讨论

  • 相关阅读:
    Vim Tricks
    刘洋-从国内三本到牛津博士
    Pandas 学习笔记
    Netbeans and Remote Host for C/C++ Developing
    排序引论
    分枝定界法解0/1背包问题
    部署WEB项目到服务器(三)安装mysql5或者mysql8到linux服务器(Ubuntu)详解
    部署WEB项目到服务器(二)安装tomcat到linux服务器(Ubuntu)详解
    部署WEB项目到服务器(一)安装java到linux服务器(Ubuntu)详解
    FIleZilla连接linux(Ubuntu)服务器的相关问题
  • 原文地址:https://www.cnblogs.com/zcynine/p/4990191.html
Copyright © 2011-2022 走看看