zoukankan      html  css  js  c++  java
  • 原生js实现ajax方法(超简单)

    function 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(); 
      xhr.responseType=ajaxData.dataType;
      xhr.open(ajaxData.type,ajaxData.url,ajaxData.async); 
      xhr.setRequestHeader("Content-Type",ajaxData.contentType); 
      xhr.send(convertData(ajaxData.data)); 
      xhr.onreadystatechange = function() { 
        if (xhr.readyState == 4) { 
          if(xhr.status == 200){
            ajaxData.success(xhr.response)
          }else{
            ajaxData.error()
          
        }
      
    }
      
    function createxmlHttpRequest() { 
      if (window.ActiveXObject) { 
        return new ActiveXObject("Microsoft.XMLHTTP"); 
      } else if (window.XMLHttpRequest) { 
        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;
      }
    }

    使用格式跟jquery的ajax差不多:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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")
      }
    })
  • 相关阅读:
    【CodeForces】889 C. Maximum Element 排列组合+动态规划
    【CodeForces】889 B. Restoration of string
    使用torchsummary打印torch模型结构,包括每层名字以及形状
    任意角度的场景文本检测论文简单总结
    vi快捷键
    sklearn框架使用例子,多种分类方法的集合,方便模型的融合
    卷积核的参数量和计算量
    windows下shell命令行的常用操作命令
    MARKDOWM书写规范
    keras使用horovod多gpu训练
  • 原文地址:https://www.cnblogs.com/wangshengli520/p/8458903.html
Copyright © 2011-2022 走看看