Ajax 对象 包含post和get两种异步传输方式

 更新时间:2009年07月21日 12:58:50   作者:  
Ajax对象接受一个对象字面量为参数,这个对象字面量中包含method,url,success,params,fail参数
复制代码 代码如下:

/**
* @author Supersha
* @QQ:770104121
*/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ajax Document</title>
<script type="text/javascript">
//注意,编码要同意为utf-8才能避免中文参数和返回中文的乱码问题
function Ajax(prop){
this.action(prop); //在实例化的时候就调用action方法
}
Ajax.prototype = {
createXHR: function(){ //创建XMLHttpRequest对象
var xhr = false;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xhr;
},
action: function(prop){
var xhr = this.createXHR();
if (xhr) {
var url = encodeURI(prop["url"]); //对URL进行编码
if (prop["method"] == "GET" && url && prop["success"]) { //GET方法
xhr.onreadystatechange = function(){
(function(){ //自执行函数用于检查服务器的返回状态并执行回调函数
if (xhr.readyState == 4 && xhr.status == 200) {
prop["success"](xhr); //执行回调函数
}
})();
};
//alert(prop["hander"] instanceof Function);
xhr.open("GET", url, true);
xhr.send(null);
}
else
if (prop["method"] == "POST" && url && prop["success"]) { //POST方法
xhr.onreadystatechange = function(){
(function(){
if (xhr.readyState == 4 && xhr.status == 200) {
prop["success"](xhr); //执行回调函数
}
})();
};
if (prop["params"]) {
url = url.indexOf("?") > -1 ? url + "&" + prop["params"] : url +"?" + prop["params"];
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(null);
}
}
else
if (!xhr && prop["fail"]) {
prop["fail"]();
}
}
}
function getData(){
var ajax = new Ajax({
url: "test.php",
method: "POST",
success: onComplete,
params: "name="+escape("沙锋") //进行编码
});
}
function onComplete(obj){
alert(unescape(obj.responseText)); //进行转码
}
</script>
</head>
<body>
<input type="button" value="Get Data" onclick="getData()"/>
</body>
</html>

注释:
Ajax对象接受一个对象字面量为参数,这个对象字面量中包含method,url,success,params,fail参数
method:"GET"或者"POST"
url:服务器端文件路径
success:当请求没有错误的时候,调用的回调函数,该回调函数带一个XMLHttpRequest对象的参数
fail:当请求错误的时候调用
params:当使用POST方法发送请求是,params为参数字符串

相关文章

  • AJAX简历系统附js文件

    AJAX简历系统附js文件

    AJAX简历系统附js文件...
    2007-08-08
  • AJAX请求队列实现

    AJAX请求队列实现

    这篇文章主要为大家详细介绍了AJAX请求队列的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 给初学ajax的人 ajax函数代码

    给初学ajax的人 ajax函数代码

    是原生的ajax,稍稍的封装了下,对了,option为json格式的数据,对此可先看这个
    2010-05-05
  • 浅析Ajax的 原理及优缺点

    浅析Ajax的 原理及优缺点

    本文从ajax技术的背景、原理、ajax的名字,ajax所包含的技术等方面展开话题,介绍ajax的原理及优缺点。本文关于ajax的原理及优缺点介绍的非常详细,具有参考借鉴价值,感兴趣的小伙伴一起学习吧
    2016-04-04
  • Ajax 实现网站劫持的检测方法

    Ajax 实现网站劫持的检测方法

    https可以彻底解决劫持的问题。但是一般虚拟主机都不支持 https,难道http只能任流氓们恶意劫持么?下面通过本文给大家介绍Ajax 实现网站劫持的检测方法,需要的朋友可以参考下
    2017-08-08
  • 使用ajax实现分页技术

    使用ajax实现分页技术

    这篇文章主要为大家详细介绍了如何使用ajax实现分页技术,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • AJAX解析XML实例之下拉框省、市二级联动

    AJAX解析XML实例之下拉框省、市二级联动

    实现省、市二级联动,当选择某一省时,改省下面的市就会在另一个下拉框显示出来,下面有个不错的示例,需要的朋友可以参考下
    2013-11-11
  • ajax回调函数参数传递正确方法

    ajax回调函数参数传递正确方法

    ajax回调函数参数传递正确方法,很多朋友习惯的写错了,这里简单的小结下。
    2010-12-12
  • jquery ajax 向后台传递数组参数示例

    jquery ajax 向后台传递数组参数示例

    在JS中向后台传递数组参数,如果数组中放的是对象类型,传递到后台是显示的只能是对象字符串--[object Object],具体的原因及解决方法如下,有类似问题的朋友可以参考下
    2013-07-07
  • Ajax配合Spring实现文件上传功能代码

    Ajax配合Spring实现文件上传功能代码

    最近在开发一个可以上传图片到服务器的web表面页面,下面给大家分享需求和实现思路,需要的的朋友参考下吧
    2017-05-05

最新评论