zoukankan      html  css  js  c++  java
  • ajax个人学习笔记

    1. function createXHR(){
    if(typeof XMLHttpRequest != 'undefined'){
    return new XMLHttpRequest();
    }else if(typeof ActiveXObject != 'undefined'){
    var version = ['MSXML2.XMLHttp.6.0',
    'MSXML2.XMLHttp.3.0',
    'MSXML2.XMLHttp'
    ];
    for(var i=0;i<version.length;i++){
    try{
    return ActiveXObject(version[i]);
    }catch(e){


    }
    }
    }else{
    throw new Error('你的系统或浏览器不支持XHR');
    }
    }


    2.IE浏览器第一次向服务器端请求,获取最新数据,其后默认获取的是缓存数据,而不是最新的数据,可以使用js中的随机字符串处理。


    3.ajax异步(true)过程中需要readyState=4值的判定


    4.xhr.getAllResponseHeaders();xhr.getResponseHeader();xhr.setRequestHeader();xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');模拟表单提交.


    5.ajax自定义封装:
    function ajax(obj){
    var xhr = createXHR();
    obj.url = obj.url + '?rand=' + Math.random();
    obj.data = params(obj.data);
    if(obj.method === 'get')
    obj.url += obj.url.indexOf("?") == -1? '?'+obj.data:'&'+obj.data;
    if(obj.async === true){
    xhr.onreadystatechange = function(){
    if(xhr.readyState ==4 ){
    callback();
    }
    };
    }else{
    callback();
    }


    xhr.open(obj.method,obj.url,obj.async);


    if(obj.method === 'post'){
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');
    xhr.send(obj.data);
    }else{
    xhr.send(null);
    }


    function params(data){
    var arr = [];
    for(var i in data){
    arr.push(encodeURLComponent(i) + '=' + encodeURIComponent(data[i]));
    }
    return arr.join('&');
    }


    function callback(){
    if(xhr.status == 200){
    obj.success(xhr.responseText);
    }else{
    alert('获取数据错误!错误代码:'+ xhr.status + ',错误信息:'+ xhr.statusText);
    }
    }
    }
  • 相关阅读:
    华为上机练习题--求两个数组的总和
    C++设计模式之状态模式(四)
    深入理解java嵌套类和内部类
    c++实现精确计时
    Linux-中断和中断处理
    使用C#对MongoDB中的数据进行查询,改动等操作
    淘特房产CMS系统 7.5
    sass03 变量、样式导入
    sass02
    sass01
  • 原文地址:https://www.cnblogs.com/qingguo/p/5686310.html
Copyright © 2011-2022 走看看