zoukankan      html  css  js  c++  java
  • [js] 轻便的XMLHttpRequest应用函数:downloadUrl() 【转】

    前段时间在用google map api的函数库的时候,发现里面的downloadUrl函数非常好用,所以自己写了一个。用腻了那些什么框架什么池,到头来发现越简单的东西越是适合我这种懒人。

    downloadUrl(url, callback, data);

    参数说明:
    url不用说了;
    callback是回调函数,函数调用的时候会有两个参数:data, responseCode,data就是responseText,responseCode就是status;
    data是要post的数据,get方式时此参数可省略。

    用法一:直接把回调函输写在参数中
    downloadUrl(’http://www.ugia.cn/wp-data/test.htm’, function (data, responseCode) {
    alert(data); // 这里处理返回的数据
    });

    用法二:先定义回调函数,然后传入
    function test(data, responseCode) {
    alert(data); // 这里处理返回的数据
    }

    downloadUrl(’http://www.ugia.cn/wp-data/test.htm’, test);

    源代码:

    1. /**
    2. * download url lite
    3. *
    4. * @author: legend(legendsky@hotmail.com)
    5. * @link: http://www.ugia.cn/?p=122
    6. * @version: 1.0
    7. *
    8. * @param string   url     
    9. * @param string   callback  回调函数
    10. * @param string  data      post数据
    11. *
    12. * @return void
    13. */
    14. function downloadUrl(url, callback, data)
    15. {
    16.     // init
    17.     url += url.indexOf("?") >= 0 ? "&" : "?";
    18.     url += "random_download_url=" + Math.random();
    19.    
    20.     if (typeof data == 'undefined')
    21.     {
    22.         var data = null;
    23.     }
    24.     method = data ? 'POST' : 'GET';
    25.    
    26.     // create XMLHttpRequest object
    27.     if (window.XMLHttpRequest)
    28.     {
    29.         var objXMLHttpRequest = new XMLHttpRequest();
    30.     }
    31.     else
    32.     {
    33.         var MSXML = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
    34.         for(var n = 0; n < MSXML.length; n ++)
    35.         {
    36.             try
    37.             {
    38.                 var objXMLHttpRequest = new ActiveXObject(MSXML[n]);       
    39.                 break;
    40.             }
    41.             catch(e)
    42.             {
    43.             }
    44.         }
    45.     }
    46.    
    47.     // send request
    48.     with(objXMLHttpRequest)
    49.     {
    50.         //setTimeouts(30*1000,30*1000,30*1000,30*60*1000);
    51.         try
    52.         {
    53.             open(method, url, true);
    54.            
    55.             if (method == 'POST')
    56.             {
    57.                 setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    58.             }
    59.            
    60.             send(data);           
    61.         }
    62.         catch(e)
    63.         {
    64.             alert(e);
    65.         }
    66.        
    67.         // on ready
    68.         onreadystatechange = function()
    69.         {
    70.             if (objXMLHttpRequest.readyState == 4)
    71.             {
    72.                 callback(objXMLHttpRequest.responseText, objXMLHttpRequest.status);
    73.                 delete(objXMLHttpRequest);
    74.             }
    75.         }
    76.     }
    77. }
  • 相关阅读:
    ls: cannot open directory .: Permission denied
    postman报错:Could not get any response
    IO流的继承关系
    吸顶效果
    linux报错:ls command not found
    内存寻址能力与CPU的位宽有关系吗?
    CPU与内存
    SQL语言的分类
    32位CPU和64位CPU 区别
    linux添加环境变量
  • 原文地址:https://www.cnblogs.com/Godblessyou/p/1779175.html
Copyright © 2011-2022 走看看