• js实现jq的ajax


    本文将介绍如何使用js封装一段代码,实现jq的ajax功能,每一步代码均有注释便于理解

    实现代码

    function ajax(){
     //获取ajax的相应值(请求类型,请求地址,同步或异步,传递数据,接收数据类型,成功失败函数等)
      var ajaxData = {
        type:arguments[0].type || "GET",
        url:arguments[0].url || "",
        async:arguments[0].async || "true",
        data:arguments[0].data || null,
        dataType:arguments[0].dataType || "text",
        contentType:arguments[0].contentType || "application/x-www-form-urlencoded",
        beforeSend:arguments[0].beforeSend || function(){},
        success:arguments[0].success || function(){},
        error:arguments[0].error || function(){}
      }
      ajaxData.beforeSend()
      var xhr = createxmlHttpRequest();    //创建 XMLHttpRequest 对象
      xhr.responseType=ajaxData.dataType;  //预期服务器返回的数据类型
      xhr.open(ajaxData.type,ajaxData.url,ajaxData.async);  //规定请求的类型、URL 以及是否异步处理请求
      xhr.setRequestHeader("Content-Type",ajaxData.contentType);  //发送信息至服务器时内容编码类型(向请求添加 HTTP 头)
      xhr.send(convertData(ajaxData.data));                     //将请求发送到服务器
      //当请求被发送到服务器时,我们需要执行一些基于响应的任务。
      //每当 readyState 改变时,就会触发 onreadystatechange 事件。
      //readyState 属性存有 XMLHttpRequest 的状态信息。
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
          if(xhr.status == 200){
            ajaxData.success(xhr.response)
          }else{
            ajaxData.error()
          }
        }
      }
    }
    //创建 XMLHttpRequest 对象
    function createxmlHttpRequest() {
      if (window.ActiveXObject) {
        // IE6, IE5 浏览器执行代码
        return new ActiveXObject("Microsoft.XMLHTTP");
      } else if (window.XMLHttpRequest) {
         //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
        return new XMLHttpRequest();
      }
    }
    //解析传入的对象
    function convertData(data){
      if( typeof data === 'object' ){
        var convertResult = "" ;
        for(var c in data){
          convertResult+= c + "=" + data[c] + "&";
        }
        convertResult=convertResult.substring(0,convertResult.length-1)
        return convertResult;
      }else{
        return data;
      }
    }

    调用方法

    ajax({
          type:"POST",
          url:"ajax.php",
          dataType:"json",
          data:{"val1":"abc","val2":123,"val3":"456"},
          beforeSend:function(){
            //some js code
          },
          success:function(msg){
            console.log(msg)
          },
          error:function(){
            console.log("error")
          }
        })
  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/liyuanqing/p/7080748.html
Copyright © 2020-2023  润新知