<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax类</title>
<script type="text/javascript">
function xStr(s) {
for (var i = 0; i < arguments.length; ++i) {
if (typeof (arguments[i]) != 'string') return false
}
return true
}
var ylib = function() {
return {
util: {},
widget: {},
namespace: function(sNameSpace) {
if (!xStr(sNameSpace)) return null;
var levels = sNameSpace.split('.');
var thisNameSpace = ylib;
for (var i = (levels[0] == 'ylib' ? 1: 0); i < levels.length; i++) {
thisNameSpace[levels[i]] = thisNameSpace[levels[i]] || {};
thisNameSpace = thisNameSpace[levels[i]];
}
}
};
} ();
ylib.namespace('ylib.util');
ylib.util.READY_STATE_UNINITIALIZED = 0;//还未被初始化
ylib.util.READY_STATE_LOADING = 1;//准备加载
ylib.util.READY_STATE_LOADED = 2;//正在加载
ylib.util.READY_STATE_INTERACTIVE = 3;//验证
ylib.util.READY_STATE_COMPLETE = 4;//完成
ylib.util.AjaxLib = function (url, callBackHandler, errorHandler, method, params, contentType) {
this.url = url;
this.callBackHandler = callBackHandler;
this.errorHandler = (errorHandler) ? errorHandler : this.DefaultErrorHandler;
this.method = (method) ? method : 'GET';
this.params = (params) ? params : [];
this.contentType = contentType;
if (!contentType && method == "POST") {
this.contentType = 'application/x-www-form-urlencoded';
}
};
ylib.util.AjaxLib.prototype = {
SendRequest: function () {
var request = this.getHTTPObject();
if (request) {
var requestParams = [];
for (var i = 0; i < arguments.length; i++) {
requestParams.push(arguments[i]);
}
var loader = this;
var url = this.url;
if (this.method == 'GET' && requestParams.length > 0) {
var qs = this.GetFullQuerystring(requestParams);
if (qs) {
if (url.indexOf('?') == -1) {
url += '?' + qs;
} else {
url += '&' + qs;
}
}
}
try {
request.onreadystatechange = function () {
loader.HandleAjaxResponse.call(loader, request);
};
request.open(this.method, url, true);
if (this.contentType) request.setRequestHeader('Content-Type', this.contentType);
request.setRequestHeader('encoding', 'UTF-8');
if (this.method == 'GET') {
request.send(null);
} else {
request.send(this.GetFullQuerystring(requestParams));
}
} catch (err) {
loader.error = err;
this.errorHandler.call(loader, request);
}
}
},
getHTTPObject: function () {
var http;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
http = new ActiveXObject("Microsoft.XMLHTTP");
}else{
http = new XMLHttpRequest();
}
return http;
},
GetFullQuerystring: function (args) {
var requestParams = [];
for (var i = 0; i < this.params.length; i++) {
if (this.params[i]) requestParams.push(this.params[i]);
}
for (var i = 0; i < args.length; i++) {
if (args[i]) requestParams.push(args[i]);
}
var qs = "";
if (requestParams && requestParams.length > 0) {
qs = requestParams.join("&");
}
return qs;
},
HandleAjaxResponse: function (request) {
var loader = this;
if (request.readyState == ylib.util.READY_STATE_COMPLETE) {
if (loader.RequestSuccess(request)) {
loader.callBackHandler.call(loader, request);
} else {
loader.errorHandler.call(loader, request);
}
request = null;
}
},
RequestSuccess: function (request) {
return request.status == 0 || (request.status >= 200 && request.status < 300);
},
DefaultErrorHandler : function (request) {
var mess = "请求发送失败!";
if (this) {
if (this.url) mess += "\n\nurl:" + this.url;
if (this.method) mess += "\n\nmethod:" + this.method;
if (this.contentType) mess += "\n\ncontentType:" + this.contentType;
if (this.params) mess += "\n\nparams:" + this.params;
if (this.error) {
if (this.error.name) mess += "\n\nerror name:" + this.error.name;
if (this.error.message) mess += "\n\nerror message:" + this.error.message;
}
}
if (request) {
if (request.readyState) mess += "\n\nreadyState:" + request.readyState;
try {
if (request.status) mess += "\n\nstatus:" + request.status;
} catch (err) {}
try {
if (request.getAllResponseHeaders) mess += "\n\nheaders:" + request.getAllResponseHeaders();
} catch (err) {}
}
alert(mess);
}
};
<!--调用方式-->
var lib = new ylib.util.AjaxLib("t.jsp",createAjaxCallBack,"","POST");
function creatAjax(){
lib.SendRequest("a=123452","v=12312");
}
function createAjaxCallBack(request){
var jsonArray = request.responseText;
alert(jsonArray)
}
</script>
</head>
<body>
<input type="button" value="创建AJAX请求" onclick="creatAjax()" />
</body>
</html>
分享到:
相关推荐
**标题解析:** "自己用的简单封装AJAX类" 指的是作者为了个人使用需求,编写了一个简化的AJAX处理类。AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,...
【标题】:“一个简单实现ajax的实例” Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新。这个...
一个简单实用的javascript AJAX 工具类; 简单应用的时候, 你不需导入像prototype,jQuery那样大的类库
创建一个名为`Service`的Java类,提供一个可被DWR调用的方法,例如`sayHello()`,该方法接受一个字符串参数并返回一个欢迎信息。 3. **DWR测试** 通过浏览器访问`http://localhost:8088/Dwr/dwr`,在页面上选择`...
在提供的`ajax.js`文件中,我们可以预期包含一个简化版的Ajax类,这个类可能是为了简化JavaScript中的Ajax请求处理。在JavaScript中,Ajax请求通常通过创建XMLHttpRequest对象来实现,但这样的代码往往比较繁琐。...
我自己写的一个Ajax类文件,是 BoroAjax.js 使用起来非常方便,比如: /****** new defBoroAjax( "server.asp", "id=Ajax", "post", $ajax("in") ).run(); *******/ 就可以实现以post方式发出的请求...
通过一个简洁易用的Ajax类,开发者可以方便地在前端HTML表单中触发Ajax请求,并在后端PHP脚本处理请求后,使用JavaScript更新页面内容,提高用户体验,避免了传统页面刷新带来的延迟感和打断感。在实际应用中,这种...
描述中的"每次都引入jQuery只用这么一个小功能感觉太浪费",揭示了一个常见的问题:开发过程中,我们往往需要引入大型框架或库来完成一个相对简单的任务,这可能导致代码体积增大,影响加载速度。因此,封装一个...
在这个"使用简单方便的Ajax通用脚本"中,我们可以看到几个关键的文件,它们共同构成了一个基本的Ajax功能库: 1. **util.js**:通常这是一个工具函数集合,包含各种常用的辅助方法,如字符串操作、数组处理、日期...
简单Ajax 类及示例 直接在初始对像时请求 响应事件,容器 直接在初始对像时请求 仅响应事件 直接在初始对像时请求 仅响应容器 初始对像后操作 响应事件,容器 初始对像后操作 仅响应事件 初始对像后操作 仅响应容器 ...
吧一个类注册到一个JSP上 在类里面可以通过 HTML元素的ID 服务端方法名称 事件名称 @EventBind(where="btn1",Fun="btn1_Click",EventName="click") public void btn1_Click(PageDocument page){ Input in = page.get...
**AJAX简单分类程序 v1.0** 是一个利用ASP(Active Server Pages)技术与Access数据库相结合构建的轻量级分类管理系统。这个程序的核心特点在于它运用了AJAX(Asynchronous JavaScript and XML)技术,实现了页面无...
本项目“一个简单的jsp+ajax留言板”展示了如何利用这两者实现用户无需刷新页面即可提交留言并实时显示的效果。 首先,我们需要理解JSP。JSP是Java的一种视图技术,它允许开发者在HTML或XML文档中嵌入Java代码,...
你可以在Java代码中定义一个类,然后在JavaScript中直接使用该类的实例,如同本地对象一样操作。 3. **Closures**:DWR支持JavaScript闭包,允许在JavaScript中定义函数,这些函数可以直接调用服务器端的方法。这...
【标题】:“一个简单的jsp聊天室(ajax技术)” 在这个项目中,我们探索了一个基于JSP和AJAX技术实现的简单聊天室。JSP(JavaServer Pages)是用于创建动态网页的技术,它允许开发者在HTML代码中嵌入Java代码,...
【Ajax聊天室】是一个基于Java Web技术实现的简单交互式应用,主要利用了Servlet、JSP和Ajax技术。这个小例子展示了如何通过Ajax实现在不刷新整个页面的情况下更新内容,提供了一个基本的在线聊天功能。 1. **...
"反向Ajax聊天简单例子"中包含的主要文件可能是一个名为`dwrtest`的文件夹,这通常代表Direct Web Remoting (DWR)的一个测试案例。DWR是一款开源的Java库,它允许JavaScript在浏览器端直接调用Java方法,从而实现...
一个很好的AJAX类,用起来很简单。请大家及时下载
【简单AJAX与ASP.NET聊天室】是一种利用Ajax...通过学习和掌握这些技术,你将能够构建出一个功能完备、用户体验良好的【简单AJAX与ASP.NET聊天室】。在实际开发过程中,还需要不断调试、测试和优化,以满足实际需求。
Servlet是一个Java类,用于扩展服务器的功能。在这个例子中,Servlet接收Ajax请求,根据商品ID查询数据库中的单价,然后计算新的总价,并将结果以JSON格式返回。 ```java @WebServlet("/AjaxBackground") public ...