zoukankan      html  css  js  c++  java
  • 第一百五十八节,封装库--JavaScript,ajax说明

    封装库--JavaScript,ajax说明

    封装库ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据

    /** ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据
     *  参数是一个对象{},如下
     *  $().ajax({
                method:'post',                  【method】属性,通讯模式,post为post模式,get为get模式
                url:'hj.php',                   【url】属性,发送数据或请求数据的url地址
                data:{                          【data】属性,是发送内容,是一个对象,里面是键值对形式的发送数据对象
                    'name':'lee',
                    'age':100
                },
                success:function (text) {       【success】属性,是一个回调函数,函数参数是text,会接收到发送或者获取到的数据
                    alert(text);
                },
                async:true                      【async】属性,请求方式,true异步方式,false同步方式
            });
     **/
    feng_zhuang_ku.prototype.ajax = function (obj) {
        //创建XHR对象
        var xhr = (function () {
            if (typeof XMLHttpRequest != 'undefined') {           //判断是否可以直接创建XHR对象,w3c
                return new XMLHttpRequest();                      //如果可以就直接创建XHR对象
            } else if (typeof ActiveXObject != 'undefined') {     //判断IE低版本的3种模式是否支持
                var version = [
                    'MSXML2.XMLHttp.6.0',
                    'MSXML2.XMLHttp.3.0',
                    'MSXML2.XMLHttp'
                ];
                for (var i = 0; version.length; i++) {
                    try {
                        return new ActiveXObject(version[i]);
                    } catch (e) {
                        //跳过
                    }
                }
            } else {
                throw new Error('您的系统或浏览器不支持XHR对象!');   //如果都不支持报错
            }
        })();  //自我执行闭包里的函数,创建XHR对象
    
        //接收对象url地址
        obj.url = obj.url + '?rand=' + Math.random();                 //组合对象传进来的通讯url地址
    
        //接收对象传来的内容,进行名值对编码
        obj.data = (function (data) {
            var arr = [];
            for (var i in data) {
                arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]));
            }
            return arr.join('&');  //将数组格式化分隔符后返回
        })(obj.data);  //自我执行闭包里的函数
    
        //判断请求方式来
        if (obj.method === 'get') obj.url += obj.url.indexOf('?') == -1 ? '?' + obj.data : '&' + obj.data;
    
        //判断发送模式如果是异步
        if (obj.async === true) {
            //添加一个加载事件
            xhr.onreadystatechange = function () {
                //判断已经接受到全部响应数据,而且可以使用
                if (xhr.readyState == 4) {
                    callback();
                }
            };
        }
        xhr.open(obj.method, obj.url, obj.async);
        if (obj.method === 'post') {
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.send(obj.data);
        } else {
            xhr.send(null);
        }
        if (obj.async === false) {
            callback();
        }
        function callback() {
            if (xhr.status == 200) {
                obj.success(xhr.responseText);            //回调传递参数
            } else {
                alert('获取数据错误!错误代号:' + xhr.status + ',错误信息:' + xhr.statusText);
            }
        }
        return this;
    };

    前台js

    //调用ajax
        $(document).on_click(function () {
            $().ajax({
                method:'post',
                url:'hj.php',
                data:{
                    'name':'lee',
                    'age':100
                },
                success:function (text) {
                    alert(text);
                },
                async:true
            });
        });

    通讯数据url地址hj.php

    <?php
      echo 'www.jxiou.com';
      print_r($_POST);
    ?>

    最终回调显示

  • 相关阅读:
    jquery 获取easyui combobox选中的值
    一个多余逗号引起的麻烦
    Microsoft.Office.Interop.Excel 放到B/S客户端失败问题 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。
    自己收藏-javascript用window.open的子窗口关闭自己并且刷新父窗口
    easyUI datagrid 不刷新问题
    水晶报表中公式字段if else 语句无法正常执行的问题
    SQL SERVER 察看数据库连接池情况
    Data Table 转 List<Type>
    .Net 调用SAP RFC
    VS2017 插件介绍
  • 原文地址:https://www.cnblogs.com/adc8868/p/6492845.html
Copyright © 2011-2022 走看看