写一个ajax框架,自己写的一个ajax框架,希望大家多提意见
/**
ajax_frame.js
Ajax Frame Version 1.0
*/
function ajax_frame()
{
var config = new Array();
var httpobj = null;
config['transfer_mode'] = 'GET';
config['async'] = true;
/* 设置传输模式 */
this.set_transfer_mode = function()
{
if ('GET' == arguments[0].toUpperCase() || 'POST' == arguments[0].toUpperCase())
{
config['transfer_mode'] = arguments[0].toUpperCase();
}
}// end set_transfer_mode;
this.set_async = function()
{
if ('boolean' == typeof arguments[0])
{
config['async'] = arguments[0];
}
}// end set_async;
/*********************************************
* 函数名称:call_func
* arguments[0] 目标文件的url
* arguments[1] 调用的函数
* arguments[2] 响应函数
* arguments[3] url要传递的对象1
* .
* .
* .
* arguments[n+3] url要传递的对象n
************************************************/
this.call_func = function()
{
if ('function' == typeof arguments[2])
{
client_callback = arguments[2];
}
get_connection_object();
var i;
var query_string = "?function=" + arguments[1];
//if ('' == arguments[1])
//query_string = "?function=" + arguments[1];
var field = null;
for(i = 3; i < arguments.length; i++)
{
field = arguments[i];
query_string = query_string + '&' + field.name + '=' + field.value;
}
/* 把时间戳加入url为的是保持url唯一性,避免浏览器缓存结果 */
var remote_url = arguments[0] + query_string + '&timeStamp=' + new Date().getTime();
httpobj.open(config['transfer_mode'], remote_url, config['async']);
if ("POST" == config['transfer_mode'])
{
try {
httpobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
} catch (cp_err) {
alert('[错误] 无法发送POST请求,请使用GET方式发送');
}
}
httpobj.onreadystatechange = callback;
httpobj.setRequestHeader("Cache-Control","no-cache");
httpobj.setRequestHeader("Pragma","no-cache");
if ('GET' == config['transfer_mode'])
{
httpobj.send(null);
}
else
{
httpobj.send(query_string);
}
if (false == config['async'])
{
callback();
}
}//end call_func
var callback = function()
{
var response = null;
if (4 == httpobj.readyState)
{
if (200 == httpobj.status)
{
response = httpobj.responseText;
if (response != null && typeof client_callback == 'function')
{
client_callback(response, httpobj.responseText);
}
}
}
}// end of callback
/****************************************
* 得到XMLHTTP连接对象
*****************************************/
var get_connection_object = function()
{
try {
httpobj = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e)
{
try {
httpobj = new ActiveXObject('Microsoft.XMLHTTP');
} catch (oc) {
httpobj = null;
}
}
if (!httpobj && typeof XMLHttpRequest != 'undefined') {
httpobj = new XMLHttpRequest();
}
if (!httpobj) {
alert('[错误] 浏览器不支持AJAX对象');
} else {
return_value = true;
}
if (httpobj.readyState != 4)
{
httpobj.abort();
}
return return_value;
}// end of get_connection_object
}
使用方式:
sample.html
window.onload = function()
{
var button = document.getElementById('say');
button.onclick = function()
{
var obj = new ajax_frame;
var txt = document.getElementById('person');
obj.call_func("helloworld.php", "helloworld", response_func, txt);
}
}
function response_func(result)
{
alert(result);
}
无标题文档
helloworld.php
$func = $_GET['function'];
$uid = $_POST['txtUID'];
$pwd = $_POST['txtPWD'];
if (function_exists($func))
$func($uid, $pwd);
else
echo "0";
function helloworld()
{
echo $_GET["person"] . " say hello world!";
}
?>
目前还没有支持xml,以后会加上。
写一个ajax框架,自己写的一个ajax框架,希望大家多提意见相关推荐
- 从头开始实现一个小型spring框架——手写Spring之集成Tomcat服务器
手写Spring之集成Tomcat与Servlet 写在前面 一.Web服务模型及servlet 1.1 Web服务器 1.2 请求流程 二.实现 三.小结 写在前面 最近学习了一下spring的相关 ...
- 【RPC框架、RPC框架必会的基本知识、手写一个RPC框架案例、优秀的RPC框架Dubbo、Dubbo和SpringCloud框架比较】
一.RPC框架必会的基本知识 1.1 什么是RPC? RPC(Remote Procedure Call --远程过程调用),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络的技术. ...
- div内嵌网页ajax,Div里面载入另一个页面的实现(取代框架)(AJax)(转)
随着框架越来越不火了,HTML5就不对框架支持了,iframe也只有url了,Div就担当了此大任 DIV+CSS在页面部局确实也很让人满意,使用也更方便 今天突然遇到一个问题,那就是需要导入另一个页 ...
- 【手写系列】纯手写实现一个高可用的RPC
前言 在实际后台服务开发中,比如订单服务(开发者A负责)需要调用商品服务(开发者B负责),那么开发者B会和A约定调用API,以接口的形式提供给A.通常都是B把API上传到Maven私服,然后B开始写A ...
- 用python来构建一个word文档-写文章
直接使用word文档已经难不倒大家了,有没有想过用python构建一个word文档写点文章呢?当然这个文章的框架需要我们用代码一点点的建立,在过程上有一点繁琐,一下子看不懂的小伙伴可以把它拆分成几个部 ...
- 实战!手把手教你如何编写一个Linux驱动并写一个支持物联网的LED演示demo
目录 一.开发环境 二. 准备工作: 1. 创建一个项目工程目录 2. 创建输出与目标目录 3.头文件目录 4. 建立源代码src目录 5. 使用git管理你的项目 三.编写LED驱动 三.一 准备工 ...
- 一个html写的app首页,如何快速开发一个简单好看的APP控制页面
原标题:如何快速开发一个简单好看的APP控制页面 导读 机智云开源框架为了让开发者快速开发APP,已将用户登录,设备发现,设备配网等功能做成了各个标准模块,仅保留控制页面让开发者自行开发设计,节省了开 ...
- php接口返回一个数组怎末写_返回php数组
PHP数组简介 v 一.PHP数组的分类 按照下标的不同,PHP中的数组分为关联数组和索引数组: 索引数组:下标从0开始,依次增长. $arr=[1,2,3,4,5]; 关联数组:下标为字符串格式,每 ...
- 喜欢写代码、讨厌内卷:一个37岁中年程序员的开源故事
"我马上就要 37 岁了,我也不清楚自己到底还能坚持奋斗几年,指不定再干几年突然就失去动力了,所以我不想把时间浪费在大公司里和别人拼看谁更能熬." 2021 年 4 月,张铎在自己 ...
- 一个成都程序猿写于离开北京一周年与26岁生日的这一天。
说明:已经连续更新快三个月的技术文章了,本次更新适逢离开北京一周年以及 26 岁生日,所以本文分享个人一些生活琐事与小小的感悟.非技术分享类文章,但是和程序猿生活息息相关,属于本号的荒腔走板环节. ...
最新文章
- linux下xampp(apache)中配置域名访问,以及遇到的问题
- 泛 归并排序 及 逆序对
- 电脑记时----千年虫
- Struts2基础知识
- C语言及程序设计进阶例程-12 结构体成员的引用
- python - 代码练习 - 差异备份/同步更新
- spring REST中的内容协商(同一资源,多种展现:xml,json,html)
- 24.两两交换链表中的节点
- Subversion for Windows 相关工具
- 【ccpc网络赛】Tree and Permutation【1009】【树上+组合数学】
- 【深度学习】Yolo记录
- D3入门教程——坐标轴
- Java中存储金额用什么数据类型?
- 老虎机数字抽奖(可控制结果)
- IBM WCM辛迪加数据同步
- 【视频-文字版】MoCo 论文逐段精读【论文精读】
- 今日技巧分享:华为手机的小技巧
- C语言-初始C语言(一)
- 【过零检测】市电过零检测电路参考设计
- 百度 JQuery简介
热门文章
- __proto__(隐式原型)与prototype(显式原型)
- Android中项目中各个文件夹的含义和用途详解
- OpenJudge/Poj 2027 No Brainer
- MySQL INNODB Plugin 测试(二)
- 【哈佛商学院和斯坦福要求学生必看的20部电影】中/英字幕
- linux centos 网络设置 优先使用ipv4 其次ipv6
- python3 mysql错误 pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
- python3 错误string indices must be integers 的解决方法
- UUID介绍与生成方法
- 代码格式化工具 uncrustify 配置文件选项详解