/**

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框架,希望大家多提意见相关推荐

  1. 从头开始实现一个小型spring框架——手写Spring之集成Tomcat服务器

    手写Spring之集成Tomcat与Servlet 写在前面 一.Web服务模型及servlet 1.1 Web服务器 1.2 请求流程 二.实现 三.小结 写在前面 最近学习了一下spring的相关 ...

  2. 【RPC框架、RPC框架必会的基本知识、手写一个RPC框架案例、优秀的RPC框架Dubbo、Dubbo和SpringCloud框架比较】

    一.RPC框架必会的基本知识 1.1 什么是RPC? RPC(Remote Procedure Call --远程过程调用),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络的技术. ...

  3. div内嵌网页ajax,Div里面载入另一个页面的实现(取代框架)(AJax)(转)

    随着框架越来越不火了,HTML5就不对框架支持了,iframe也只有url了,Div就担当了此大任 DIV+CSS在页面部局确实也很让人满意,使用也更方便 今天突然遇到一个问题,那就是需要导入另一个页 ...

  4. 【手写系列】纯手写实现一个高可用的RPC

    前言 在实际后台服务开发中,比如订单服务(开发者A负责)需要调用商品服务(开发者B负责),那么开发者B会和A约定调用API,以接口的形式提供给A.通常都是B把API上传到Maven私服,然后B开始写A ...

  5. 用python来构建一个word文档-写文章

    直接使用word文档已经难不倒大家了,有没有想过用python构建一个word文档写点文章呢?当然这个文章的框架需要我们用代码一点点的建立,在过程上有一点繁琐,一下子看不懂的小伙伴可以把它拆分成几个部 ...

  6. 实战!手把手教你如何编写一个Linux驱动并写一个支持物联网的LED演示demo

    目录 一.开发环境 二. 准备工作: 1. 创建一个项目工程目录 2. 创建输出与目标目录 3.头文件目录 4. 建立源代码src目录 5. 使用git管理你的项目 三.编写LED驱动 三.一 准备工 ...

  7. 一个html写的app首页,如何快速开发一个简单好看的APP控制页面

    原标题:如何快速开发一个简单好看的APP控制页面 导读 机智云开源框架为了让开发者快速开发APP,已将用户登录,设备发现,设备配网等功能做成了各个标准模块,仅保留控制页面让开发者自行开发设计,节省了开 ...

  8. php接口返回一个数组怎末写_返回php数组

    PHP数组简介 v 一.PHP数组的分类 按照下标的不同,PHP中的数组分为关联数组和索引数组: 索引数组:下标从0开始,依次增长. $arr=[1,2,3,4,5]; 关联数组:下标为字符串格式,每 ...

  9. 喜欢写代码、讨厌内卷:一个37岁中年程序员的开源故事

    "我马上就要 37 岁了,我也不清楚自己到底还能坚持奋斗几年,指不定再干几年突然就失去动力了,所以我不想把时间浪费在大公司里和别人拼看谁更能熬." 2021 年 4 月,张铎在自己 ...

  10. 一个成都程序猿写于离开北京一周年与26岁生日的这一天。

    ​ 说明:已经连续更新快三个月的技术文章了,本次更新适逢离开北京一周年以及 26 岁生日,所以本文分享个人一些生活琐事与小小的感悟.非技术分享类文章,但是和程序猿生活息息相关,属于本号的荒腔走板环节. ...

最新文章

  1. linux下xampp(apache)中配置域名访问,以及遇到的问题
  2. 泛 归并排序 及 逆序对
  3. 电脑记时----千年虫
  4. Struts2基础知识
  5. C语言及程序设计进阶例程-12 结构体成员的引用
  6. python - 代码练习 - 差异备份/同步更新
  7. spring REST中的内容协商(同一资源,多种展现:xml,json,html)
  8. 24.两两交换链表中的节点
  9. Subversion for Windows 相关工具
  10. 【ccpc网络赛】Tree and Permutation【1009】【树上+组合数学】
  11. 【深度学习】Yolo记录
  12. D3入门教程——坐标轴
  13. Java中存储金额用什么数据类型?
  14. 老虎机数字抽奖(可控制结果)
  15. IBM WCM辛迪加数据同步
  16. 【视频-文字版】MoCo 论文逐段精读【论文精读】
  17. 今日技巧分享:华为手机的小技巧
  18. C语言-初始C语言(一)
  19. 【过零检测】市电过零检测电路参考设计
  20. 百度 JQuery简介

热门文章

  1. __proto__(隐式原型)与prototype(显式原型)
  2. Android中项目中各个文件夹的含义和用途详解
  3. OpenJudge/Poj 2027 No Brainer
  4. MySQL INNODB Plugin 测试(二)
  5. 【哈佛商学院和斯坦福要求学生必看的20部电影】中/英字幕
  6. linux centos 网络设置 优先使用ipv4 其次ipv6
  7. python3 mysql错误 pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
  8. python3 错误string indices must be integers 的解决方法
  9. UUID介绍与生成方法
  10. 代码格式化工具 uncrustify 配置文件选项详解