其实很长时间我都是在用第三方库,比如jquery ,prototype.js ,ext.js 关注过我blog的朋友不难发现我不喜欢造轮子,有现成的就用现成的。但是如今那些库都变得很庞大。 虽然jquery 的库,所提供的功能非常实用,基本也感觉没啥冗余。 不过一般一个web 页面基本都用不了,那么4、5000行的库,有人就为了用个ajax 跑去使用ext 。。。。其实我们不妨把自己所需要的一些js 公共函数 封装成比较独立的脚本。这样能省掉不少流量,况且 关于GPL 的开源协议,也能将部分用户拒之门外的,必定这是一个商业社会。
试看淘宝,网易,腾讯,搜狐…… 别人都有自己的脚本库。我也想过在金山做那么一个脚本库,连怎么把这么多脚本小库,组织起来,怎么提供一个内部的脚本服务器,比如就像google 的,开发都按需申请加载 这些我都想好了。本人JavaScript 脚本也基本差不多达到了,然而,听说是更有价值的事情等着我了……
ajax.js:
/**
* @author hechangmin@gmail.com
* @brief 封装 ajax 接口
*/
var Ajax =
{
/**
* @brief 创建XMLHTTP 对象
*/
_creatXmlHttp : function()
{
if(window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
var aVersions = ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
for(var i=0; i<aVersions.length; i++)
{
try
{
return new ActiveXObject(aVersions[i]);
}catch(e)
{
}
}
}
},
/**
* @brief 发送请求,以及绑定回调函数
* @param {Object} option [可选]
* {
* [method],[async],url,data,[success],[encode],[error]
* }
*/
sendRequest : function(_option)
{
var xmlhttp = Ajax._creatXmlHttp();
var option = _option;
if(!xmlhttp)
{
alert("Your browser against Ajax.");
return false;
}
Ajax._CheckParam(option);
xmlhttp.open(option.method, option.url, option.async);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=' + option.encode);
xmlhttp.onreadystatechange = Ajax._BindCallBack(xmlhttp,option);
xmlhttp.send(option.data || null);
return xmlhttp;
},
/**
* @brief 绑定回调
*/
_BindCallBack : function(xmlhttp,option)
{
return function()
{
if (xmlhttp.readyState == 4)
{
if (xmlhttp.status >= 200 && xmlhttp.status < 300 )
{
if(option.success != null)
{
option.success(xmlhttp.responseText);
delete xmlhttp;
xmlhttp = null;
}
}else
{
if(option.error != null)
{
option.error(xmlhttp.responseText);
delete xmlhttp;
xmlhttp = null;
}
}
}
}
},
/**
* @brief 参数校验 补齐默认值
* @param {Object} option
*/
_CheckParam : function(option)
{
if(!option.method)
{
option.method = "post";
}else if(option.method.toLowerCase() === "get")
{
option.method = "get";
}else
{
option.method = "post";
}
if(option.async === window.undefined)
{
option.async = true;
}
if(!option.url)
{
option.url = window.location.href;
}
if(!option.encode)
{
option.encode = "UTF-8";
}
if (option.method == 'get' && typeof(option.data) == 'string')
{
option.url += (option.url.indexOf('?') == -1 ? '?' : '&') + "data=" + option.data;
option.data = null;
}
if(option.method == 'post')
{
option.data = "data=" + option.data;
}
}
}
test.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="public/js/ajax.js"></script>
<script type="text/javascript" src="public/js/json2.js"></script>
</head>
<body>
<div id="test1">aaaa</div>
<script type="text/javascript" defer="true">
var param = {
method : "get",
async : true,
url : "test.php",
data : "testtest",
success: function(txt)
{
alert(txt);
},
encode : "UTF-8",
onerror : function(txt)
{
alert(txt);
}
};
var x = JSON.stringify(param);
alert(x);
alert(typeof x );
var y = JSON.parse(x);
alert(typeof y);
for(var i in y)
{
alert("y." + i + ":" + y[i]);
}
//alert(param);
Ajax.sendRequest(param);
var param1 = {
url : "test.php",
async : false,
data : "aaaaa"
};
var ret = Ajax.sendRequest(param1).responseText;
alert(ret);
</script>
</body>
</html>
关于解析JSON 的部分:
http://www.JSON.org/json2.js
http://www.JSON.org/js.html
分享到:
相关推荐
AJAX (Asynchronous JavaScript and XML, 异步 JavaScript 及 XML 技术) 是个新词,但内涵是两个存在已有一段时间的 JavaScript 功能。这两种功能以往一直被忽略,在 Gmail、Google suggest 及 Google Maps 出现后才...
Ajax篇:Ajax是上帝赐予JavaScript的礼物。凭借着Ajax,JavaScript拥有了异步调度服务端业务逻辑的能力。本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和.NET开发的程序员安排了适合他们的DWR、Atlas框架。...
Ajax篇:Ajax是上帝赐予JavaScript的礼物。凭借着Ajax,JavaScript拥有了异步调度服务端业务逻辑的能力。本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和.NET开发的程序员安排了适合他们的DWR、Atlas框架。...
第三篇讲解的是javascript的高级技术,主要讲解了javascript与xml技术、正则表达式、ajax基础、ajax高级应用、javascript与插件和javascript的调试与优化等。最后一篇为综合案例篇,用一个完整的例子讲解了如何使用...
第三篇为高级技术,主要包括BOM中的其他对象、文档对象模型以及Ajax技术等内容。 《JavaScript从入门到精通》适合于JavaScript的初学者使用,也适合有一定JavaScript基础想进一步提高的网页开发者使用。
本书分4篇14章,介绍Javascript的知识,全书内容包括:Javascript语法基础、流程控制、函数、内置对象编程、文档对象模型DOM与事件驱动、处理XML、使用Cookie和文件、应用Ajax技术等。本书最后一篇从6个...
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍,学习js的朋友可以参考下
《JavaScript征途》内容全面,由浅入深,包括6篇21章,主要内容包括:JavaScript语言的基本特性,开发简单的JavaScript程序,JavaScript语法体系,数据、数据类型和变量,运算符和表达式,语句和结构,JavaScript...
javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的...以上这篇浅谈Ajax和JavaScript的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望
第三篇讲解的是Javascript的高级技术,主要讲解了Javascript与XML技术、正 则表达式、Ajax基础、Ajax高级应用、Javascript与插件和Javascript的调试与优化等。最后一篇综合案例篇用一个完整的例子讲解了如何使用...
在上篇文章给大家介绍了javascript jquery ajax的小结,今天接着给大家介绍javascript jquery与ajax的关系,感兴趣的朋友一起学习吧 简单总结: 1、JS是一门前端语言。 2、Ajax是一门技术,它提供了异步更新的机制...
第1篇 JavaScript基础篇 第1章 JavaScript简介 1 1.1 JavaScript概述 1 1.1.1 什么是JavaScript 1 1.1.2 JavaScript的基本特点 2 1.1.3 常用的Web开发语言 3 1.2 JavaScript的应用 4 1.2.1 客户端应用 5 1.2.2 ...
主要介绍了JavaScript Ajax编程之应用篇,感兴趣的朋友可以参考一下
javascript小技巧&&JavaScript[对象_属性]集锦 [转载了多篇] - 天轰穿_net-vs2005-ajax入门 - 博客园
本篇文章主要介绍了JavaScript使用Ajax上传文件的示例代码,详细的介绍了两种上传方式,感兴趣的小伙伴可以了解一下
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)。这篇文章主要给大家介绍了JavaScript中的ajax功能的概念和示例详解,感兴趣的朋友一起看看吧
基础知识全面 对JavaScript进行了全面的介绍,内容编排合理,其中第一篇、第二篇适合初学者学习,有一定基础的人员可以跳过这两篇。 用实例说话 包含了大量完整的代码,并有相应的执行效果图。
JavaScript 和 AJAX 跨域访问分为两大类,一是本域和子域的交互,二是本域和其他域的交互。 一、本域和子域的交互:www.s135.com 和 blog.s135.com 二、本域和其他域的交互:blog.s135.com 和 api.bz 本域和...
在本篇文章中我们总结了关于JavaScript原生封装ajax请求和Jquery中的ajax请求的知识点内容,需要的朋友们学习参考下。