zoukankan      html  css  js  c++  java
  • ajax技术

    # ajax发送异步请求

     下面关于ajax发送数据,都是采用formdata方式发送的,请求头都默认为("content-type","application/x-www-form-urlencoded");

    服务器端需要对url进行URLencoded转码获取数据.

    还有一种发送post数据的方式,采用request payload载荷,发送json数据请求头为("content-type","application/json;charset=utf8");

    服务器端需要采用对json格式进行转码,将json格式的字符串,转化为对象

    ## 原生ajax
    1. GET方式发送ajax
    ```javascript
    // 创建异步对象
    var xhr = new XMLHttpRequest();
    // 请求行
    xhr.open("get","xxx.php?key=value");
    // 注册回调函数
    xhr.onload = function (backData) {
    console.log(backData);
    }
    // 请求主体
    xhr.send(null);
    ```
    2. POST方式发送ajax
    ```javascript
    // 创建异步对象
    var xhr = new XMLHttpRequest();
    // 请求行
    xhr.open("post","xxx.php");
    // 请求头
    xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
    // 注册回调函数
    xhr.onload = function (backData) {
    console.log(backData);
    }
    // 请求主体
    xhr.send("key1=value1&key2=value2");
    ```
     
    3. 封装一个简单的ajax
    ```javascript
    /**
    * type:发送方式,get ,post
    * url:地址
    * data:发送的数据
    * success:回调函数
    * */
    function ajax (option){
    // 创建异步对象
    var xhr = new XMLHttpRequest();
    // 请求行
    if(option.type=="get"&& option.data){
    option.url += "?" +option.data;
    option.data=null;
    }
    xhr.open(option.type, option.url);
    // 请求头
    if(option.type=="post"&& option.data){
    xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
    }
    // 注册回调函数
    xhr.onreadystatechange = function (xhr.) {
    if(xhr.readyState==4&&xhr.status==200){
    // 判断数据类型
    var type = xhr.getResponseHeader("content-type");
    // xml格式
    if(type.indexOf("xml")!=-1) {
    option.success(xhr.responseXML);
    // json格式
    }else if(type.indexOf("json")!=-1){
    option.success(JSON.parse(xhr.responseText));
    }else {
    option.success(xhr.responseText);
    }
    }
    }
    // 请求主体
    xhr.send(option.data);
    }
    ```
    4. jQuery的ajax
    自己封装的ajax会存在一些问题,直接使用jQuery封装的ajax会避免很多麻烦,解决兼容性问题,并对细节的处理更好.
    下面直接写了一个大概的使用方法,具体使用方法参考jQuery文档.
    ```javascript
    $.ajax({
    type:"post",
    url:"xxx.php",
    data:"key1=value1&key2=value2",
    // 数据接收成功的回调函数
    success:function (backData) {
    console.log(backData);
    },
    // 数据接收错误的回调函数
    error:function (backData) {
    console.log(backData);
    }
    dataType:"json"
    })
    ```
     
    注该随笔使用的md格式编辑
  • 相关阅读:
    Discuz!NT 系统架构分析
    jquery pager
    Nhibernate分页方法
    Discuz nt模板机制
    WTclient创建OPC client方法
    OPC
    Regular Expressions in Java
    How to use VS to manipulate Access
    OPC客户端设计
    How to use VS to manipulate Excel使用MFC读写Excel
  • 原文地址:https://www.cnblogs.com/htmlli/p/7906322.html
Copyright © 2011-2022 走看看