ajax框架封装

public.js

//1、定义自调用匿名函数,用于解决函数冲突问题
(function(){
    //2、定义一个函数用于获取指定id的dom对象
    var $ = function(id){
        return document.getElementById(id);
    };

    //4、解决Ajax对象兼容性问题
    $.init = function() {
        //W3C浏览器
        try {
            return new XMLHttpRequest();
        } catch(e) {}
        //IE浏览器
        try {
            return new ActiveXObject(‘Microsoft.XMLHTTP‘);
        } catch(e) {}
        alert(‘您的浏览器不支持Ajax,请更换‘);
    }

    //5、封装Ajax中的GET请求
    $.get = function(url,data,callback,type) {
        //① 创建Ajax对象
        var xhr = $.init();
        //② 设置回调函数
        xhr.onreadystatechange = function() {
            //⑥ 判断与执行
            if(xhr.readyState==4 && xhr.status==200) {
                //判断type类型
                if(type==null) {
                    callback(xhr.responseText);
                }
                if(type==‘text‘) {
                    callback(xhr.responseText);
                }
                if(type==‘xml‘) {
                    callback(xhr.responseXML);
                }
                if(type==‘json‘) {
                    callback(eval(‘(‘+xhr.responseText+‘)‘));
                }
            }
        }
        if(data!=null) {
            url = url+‘?‘+data;
        }
        //③ 初始化Ajax对象
        xhr.open(‘get‘,url);
        //④ 解决缓存问题
        xhr.setRequestHeader(‘If-Modified-Since‘,‘0‘);
        //⑤ 发送Ajax请求
        xhr.send(null);
    }

    //6、实现对Ajax中的POST请求进行封装
    $.post = function(url,data,callback,type) {
        //① 创建Ajax对象
        var xhr = $.init();
        //② 设置回调函数
        xhr.onreadystatechange = function() {
            //⑥ 判断与执行
            if(xhr.readyState==4 && xhr.status==200) {
                //判断type类型
                if(type==null) {
                    callback(xhr.responseText);
                }
                if(type==‘text‘) {
                    callback(xhr.responseText);
                }
                if(type==‘xml‘) {
                    callback(xhr.responseXML);
                }
                if(type==‘json‘) {
                    callback(eval(‘(‘+xhr.responseText+‘)‘));
                }
            }
        }
        //③ 初始化Ajax对象
        xhr.open(‘post‘,url);
        //④ 设置请求头信息
        xhr.setRequestHeader(‘Content-type‘,‘application/x-www-form-urlencoded‘);
        //⑤ 发送Ajax请求
        xhr.send(data);
    }

    //3、把$声明为全局变量
    window.$ = $;
})();

demo04.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src=‘public.js‘></script>
<script>
    window.onload = function() {
        $(‘btnget‘).onclick = function() {
            //实现Ajax的get请求
            $.get(‘demo04_1.php‘,‘username=zhangsan‘,function(msg) {
                alert(msg);
            },‘text‘);
        }
        $(‘btnpost‘).onclick = function() {
            //实现Ajax的post请求
            $.post(‘demo04_2.php‘,‘first=100&second=20‘,function(msg) {
                alert(msg);
            },‘text‘);
        }
        $(‘btnxml‘).onclick = function() {
            //发送get请求获取两个数的四则运算
            $.get(‘demo04_3.php‘,‘first=100&second=20‘,function(msg){
                var jia = msg.getElementsByTagName(‘jia‘)[0].childNodes[0].nodeValue;
                var jian = msg.getElementsByTagName(‘jian‘)[0].childNodes[0].nodeValue;
                var cheng = msg.getElementsByTagName(‘cheng‘)[0].childNodes[0].nodeValue;
                var chu = msg.getElementsByTagName(‘chu‘)[0].childNodes[0].nodeValue;
                alert(jia+‘-‘+jian+‘-‘+cheng+‘-‘+chu);
            },‘xml‘);
        }
        $(‘btnjson‘).onclick = function() {
            $.post(‘demo04_4.php‘,null,function(msg){
                //清空下拉选框
                $(‘category‘).length = 0;
                for(var i=0;i<msg.length;i++) {
                    //创建op对象
                    var op = new Option(msg[i].c_name,msg[i].c_id);
                    //追加op对象到系统的category下拉选框中
                    $(‘category‘).options.add(op);
                }
            },‘json‘);
        }
    }
</script>
</head>
<body>
<input type="button" id=‘btnget‘ value=‘get请求‘ />
<input type="button" id=‘btnpost‘ value=‘post请求‘ />
<input type="button" id=‘btnxml‘ value=‘xml数据‘ />
<input type="button" id=‘btnjson‘ value=‘json数据‘ />
    <hr />
    <select id=‘category‘></select>
</body>
</html>

demo04_1.php

<?php
$username = $_GET[‘username‘];
echo ‘hello,‘.$username;

demo04_2.php

<?php
$first = $_POST[‘first‘];
$second = $_POST[‘second‘];
echo $first+$second;

demo04_3.php  --  返回XML对象

<?php
$first = $_GET[‘first‘];
$second = $_GET[‘second‘];

$jia = $first+$second;
$jian = $first-$second;
$cheng = $first*$second;
$chu = $first/$second;

$str = <<<str
    <counter>
        <jia>$jia</jia>
        <jian>$jian</jian>
        <cheng>$cheng</cheng>
        <chu>$chu</chu>
    </counter>
str;
header(‘Content-type:text/xml; charset=utf-8‘);
echo $str;

demo04_4.php  --  返回JSON对象

<?php
//链接数据库
mysql_connect(‘localhost‘,‘root‘,‘mysql‘);
mysql_query(‘use Shop‘);
mysql_query(‘set names utf8‘);

//组装sql语句
$sql = "select c_id,c_name from sh_category order by c_id desc";
$res = mysql_query($sql);
$data = array();
while($row = mysql_fetch_assoc($res)) {
    $data[] = $row;
}

echo json_encode($data);
时间: 2024-07-30 13:48:45

ajax框架封装的相关文章

封装自己的Ajax框架

Ajax技术就是利用javascript和xml实现异步交互的功能. 首先先来介绍一下Ajax相关知识点 一.Ajax对象的创建 1.创建Ajax对象的方式 a.第一种方式是针对IE浏览器 b.第二种方式针对w3c:在IE的高版本(IE8+),已经支持了XMLHttpRequest类 2.解决兼容性 a.创建公共文件 public.js b.在需要使用ajax对象的页面中,包含以上js文件 二.ajax对象的相关属性和方法 方法: 1.初始化ajax对象 open(method,url)  me

Ajax工作原理以及常用的Ajax框架

1,关于同步和异步 异步传输是面向字符的传输,它的单位是字符:而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的. ajax可以提升用户体验,它是利用异步请求方式的.打个比方,如果现在你家里所在的小区因 某种情况而面临停水,现在有关部门公布了两种方案,一是完全停水8个小时,在这8个小时内完全停水,8个小时后恢复正常.二是不完全停水10 个小时,在这10个小时内水没有完全断,只是流量比原来小了很多,在10个小时后恢复正常流量,那么,如果是你你会选择哪种方式呢

原生态AJAX详解和jquery对AJAX的封装

AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript    JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在貌似已经无处不在了,其实自从web2.0的广泛发展带来了AJAX的发展.我们目前的客户端可以分为胖客户端(C/S).廋客户端(B/S), PS:胖客户泛指客户端承担一部分计算工作减轻服务器压力.典型应用 :C / S架构的客户端.瘦客户泛指客户端不承担任何计算工作,完全依赖服务器端计算.典型应用:B

AJAX(二)AJAX框架

上文(AJAX(一)AJAX的简介和基础)对ajax异步请求服务器做了详细的介绍和基础应用,可以看出,ajax的一些过程是相对不变的.不必要每次发送请求都写一遍发送代码,一些ajax开发人员已经把他们的过程封装成ajax框架. 本节主要介绍ajaxLib和ajaxGold两款框架. 1.ajaxLib ajaxLib是一个非常小巧的ajax框架. 使用它首先将文件使用引入到页面中.改框架是一个直接获取XML的框架,调运函数如下: loadXMLDoc(url,callback,boolean)

java并行调度框架封装及示例

参考资料:  阿里巴巴开源项目 CobarClient  源码实现. 分享作者:闫建忠 分享时间:2014年5月7日 --------------------------------------------------------------------------------------- 并行调度封装类设计: BXexample.java package org.hdht.business.ordermanager.quartzjob; import java.util.ArrayList;

LoadRunner测试ajax框架,回放后系统中没有产生数据解决方法

LoadRunner测试ajax框架的系统时,录制回放都没有报错,但是回放后系统中没有产生数据,数据始终不能写入数据库.查了一下原因,应该是录制的脚本不完善的问题,因为JS是在客户端执行的程序,LR只能监控客户机与服务器之前的通信. 解决方法: Recording options> HTTP Properites> Advanced > Headers: 选择"Record headers not in list", 然后点ok. 重新录制一遍脚本,会发现脚本里多出一

上门洗车APP --- Android客户端开发 之 网络框架封装(二)

上门洗车APP --- Android客户端开发 之 网络框架封装(二) 前几篇博文中给大家介绍了一下APP中的基本业务及开发本项目使用的网络架构: 上门洗车APP --- Android客户端开发 前言及业务简介 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 本篇接着给大家分享网络框架封装,相信感兴趣的朋友已经对上篇博文中的一些开源项目有了些许了解,这里继续为大家介绍关于GenericDataManager 通用网络管理类中的 dataRequest 方法 和

原生ajax与封装的ajax使用方法

当我们不会写后端接口来测试ajax时,我们可以使用node环境来模拟一个后端接口. 1.模拟后端接口可参考http://www.cnblogs.com/heyujun-/p/6793900.html网站整站开发小例子,在打开命令窗口并转到所在项目文件夹下在命令行中输入npm install express --save,安装express中间件. 2.把当中的app.js的内容换成 var express=require('express'); //var path=require('path'

Ajax的封装。

封装 Ajax 因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST:到 底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用.    封装支持接收来自服务端的数据,不可以发送数据到服务端 /** * 此封装只支持接收来自服务端的数据,不可以发送数据到服务端 */ function ajax(obj) { var xhr = new XMLHttpRequest(); obj.url = obj.url + '?rand=' + Math.ran