zoukankan      html  css  js  c++  java
  • 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();
      }
     }
    };



  • 相关阅读:
    毕业实习[招聘网站爬虫项目]之项目总结
    实际开发中,数据库设计可行的两种过程
    SpringBoot中Application开启与关闭
    SpringBoot学习笔记<一>入门与基本配置
    Maven学习笔记
    sbt 配置
    [转] prerender-SPA程序的SEO优化策略
    [转] 用SBT编译Spark的WordCount程序
    Spark
    RT: np
  • 原文地址:https://www.cnblogs.com/ghlucky/p/5702058.html
Copyright © 2011-2022 走看看