• AJAX编程-封装ajax工具函数


    即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用。
    本质是在HTTP协议的基础上以异步的方式与服务器进行通信。

    XMLHttpRequest可以以异步方式的处理程序,浏览器内建对象,用于在后台与服务器通信(交换数据) ,由此我们便可实现对网页的部分更新,而不是刷新整个页面。

    封装ajax工具函数

    $.ajax = function(options){

       if(!options) return false;

      /*options 参数传递*/
      var type = options.type || 'get';
      var url = options.url || location.pathname;
      var async = options.async === false ? false : true;
      var data = options.data || {};

    /*data 选要转化成 name=xjj&age=10*/
      var dataStr = '';
      for(var key in data){
      //console.log(data[key]);
      dataStr += key+'='+data[key]+'&';
      }

    /*如果就数据 就裁剪掉最后一个&*/
      dataStr = dataStr && dataStr.slice(0,-1);


      /*ajax 编程*/
      /*初始化*/
      var xhr = new XMLHttpRequest();

      /*请求行*/
      /*如果是get请求那么就要拼接数据在url后面 ?*/
      xhr.open(type,type == 'get'?url+'?'+dataStr:url,async);

      /*请求头*/
      /*如果是post请求需要设置 content-type application/x-www-form-urlencoded*/
      if(type == 'post'){
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      }

      options.beforeSend && options.beforeSend();

      /*请求主体*/
      /*如果是post请求需要把数据字符传过去 否则是null*/
      xhr.send(type=='get'?null:dataStr);

      /*监听响应状态的改变*/
      xhr.onreadystatechange = function(){
      /*响应成功*/
      if(xhr.readyState == 4){
        if( xhr.status == 200){
        /*处理响应成功函数*/
          var result = '';
          /*接受数据*/
          /* json xml string*/
          var contentType = xhr.getResponseHeader('Content-Type');

          if(contentType.indexOf('xml') > -1){
          /*服务端返回的是xml数据格式*/
            result = xhr.responseXML;
           }else if(contentType.indexOf('json') > -1){
            /*服务端返回的是json数据格式*/
            /*json字符串*/
            var str = xhr.responseText;
            result = JSON.parse(str);
           }else{
          result = xhr.responseText;
          }

        /*调用回调函数*/
          options.success && options.success(result);
        }
      /*响应失败*/
      else{
        /*处理响应失败函数*/
      options.error && options.error('request fail code' + xhr.status);
        }

      options.complete && options.complete();
      }
     }
    };



  • 相关阅读:
    Windows下路由表分析
    VMware Workstation网络连接的三种模式
    VMware Workstation环境下的三种网络配置桥接,NAT和HOST-ONLY
    Binary Tree Right Side View
    Count Complete Tree Nodes
    Flatten Binary Tree to Linked List
    Valid Anagram
    SELINUX部分的权限规则问题鸟哥7.4&&7.5?????
    网络五层架构及各层使用的协议
    Linux的echo -n -e 两个参数的含义
  • 原文地址:https://www.cnblogs.com/ghlucky/p/5702058.html
Copyright © 2020-2023  润新知