function Ajax()
{
var len=arguments.length;
var type,url,postdata,fn;
if(len<2)
{
alert('没有2个一下参数的重载,至少必须指定请求类型(type)和url地址!');
return;
}
type=arguments[0];
url=arguments[1];
if(len>2)
{
var args=arguments[2];
if(typeof(args)=="string")
{
postdata=args;
}
}
var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
xhr.open(type,url,true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
fn = arguments[len-1];
xhr.onreadystatechange = function (){
if(xhr.readyState==4)
{
if(xhr.status==200)
{
if(typeof(fn)=="function")
fn(xhr.responseText);
}
else
{
alert("你所请求的页面有异常");
}
}
};
xhr.send(postdata);
}
function Test()
{
Ajax("get","/WebRoot/servlet/TestAjax");
Ajax("get","/WebRoot/servlet/TestAjax",function (date){
alert("Get Date:\n"+date);
});
Ajax("post","/WebRoot/servlet/TestAjax");
Ajax("post","/WebRoot/servlet/TestAjax",function (date){
alert("Post Date:\n"+date);
});
Ajax("post","/WebRoot/servlet/TestAjax","username=jonllen&pwd=123456",function (date){
alert("Post Date:\n"+date);
});
}
就只有一个函数Ajax,调用的例子是Test(),由于JavaScript的函数申明不需要固定参数,能实现动态获取传递,利用这点我们能实现类似与C#或Java里面的重载,并且我们能根据传入参数的类型和数量进行特别的判断,而执行不同的操作。上述Ajax函数里就用到判断当最后一个传入的参数是函数类型的时候我们就认为是这个是Ajax回调函数,如果是字符串类型的话就认为是postData,这样我们就能实现动态传递可选参数,也就是说你可以加上function(data){alert(date);}就会自动在Ajax加载返回的回调该函数,如果没有就不调用。
在JQuery里面,我们大多会用到对象的prototype属性,并也可实现可选参数默认构造函数来实例对象,形如:
var Ajax = {
url : location.href,
type : "post",
send : function ()
{
alert (this.type);
}
};
Ajax.send();
alert( Ajax.url );
于是,JQuery便能这样调用Ajax:
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});
不过我对整个JQuery框架的源码还有一些疑问,当我想自己来实现像JQuery这样来调用的Ajax请求函数的时候遇到了一些问题,我想在对象构造函数里面再加上一层构造函数缺省值,却获得不了构造函数参数的值,调用不报什么错误,就是获取到的值都是undefinde,可能是我还未了解JavaScrit里面一些更深奥的东西吧。。。^_^
上面我写的Ajax函数也能动态判断指定参数的功能,实现很简单就是根据传入的arguments数量和类型来判断的,所以我们在调用的时候能像在Test里面有多种参数调用的方式,方便实用。当我们不需要用到整个JQuery框架或只要用Ajax的时候就嵌入这一段函数就有了,更重要的是自己写的不会造成跟其他的产生冲突。
以上我写的Ajax的函数在IE6、FF2.0、Chrome内测试都正常,请求的服务器端是Servlet,都能正常的返回结果。注意:当post过去有中文的时候postData数据最好先单个针对中文进行encodeURI(postData)URL编码,Ajax请求post的时候都是以UTF-8编码格式发送的,确保服务器端和客户端编码一致,这样就不会出现中文乱码问题。
分享到:
相关推荐
"validate 通用Ajax无刷新表单验证类"就是针对这一需求设计的,旨在提供一个高效、便捷的解决方案,使得在用户填写表单时能够实时进行数据验证,无需等待页面刷新,极大地提高了用户体验。 Ajax(Asynchronous ...
例如,你可以创建一个验证电话号码格式的函数,或者验证用户输入的日期是否在特定范围内。 压缩包中的实例代码可能是如何在实际项目中集成和使用这些验证函数的演示。通过学习这些例子,开发者可以快速理解如何在...
本资源提供的“Ajax通用分页源码”正是这样一个功能模块,它允许用户在浏览大量数据时,只加载当前所需的页面内容,从而提高网页性能和用户交互性。 首先,让我们了解Ajax分页的基本原理。在ASP.NET中,分页通常...
5. 可扩展性:由于`validate`是一个通用类,因此它设计时考虑了可扩展性,方便与其他JavaScript库(如jQuery、React、Vue等)结合使用,同时可以通过插件形式添加更多功能。 6. 轻量级:`validate`类通常体积小巧,...
3. jQuery集成:jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画和Ajax交互。在自定义JS类框架中,可能会将jQuery的一些功能封装成类方法,以提供更加统一的API。 4. 继承:JavaScript的继承...
通用分页则是指设计一个可以适应多种场景的分页组件,它可能包含以下特性: 1. 参数化配置:允许用户自定义每页显示的记录数。 2. URL路由处理:支持参数传递,如通过`?page=2`来表示第2页。 3. 多种样式支持:提供...
在本文中,我们将深入探讨如何使用jQuery实现一个可自定义多个倒计时时间展示的插件。jQuery是一款广泛应用于Web开发中的JavaScript库,它简化了DOM操作、事件处理以及Ajax交互等任务。对于创建倒计时插件,jQuery...
JSON-lib 是一个方便的 Java 库,用于 JSON 与 Java 对象之间的转换,依赖于几个 Apache Commons 库。 总结来说,JQuery AJAX 提供了与服务器异步交互的能力,而 JSON 则是高效的数据交换格式。两者结合使用,可以...
首先,你需要安装Spket插件,一个强大的JavaScript和Ajax开发工具。版本1.6.18是推荐的一个版本,你可以通过网络资源找到安装指南,例如参考百度文库上的教程:...
`$.ajax()`是jQuery提供的更通用的Ajax请求方式,它允许开发者自定义更多的选项,如请求类型(GET或POST)、数据类型、回调函数等。在`getA()`函数中,我们看到了`$.ajax()`的使用。它设置了URL、请求类型、POST...
### 基于ASP.NET Ajax框架实现表单验证编程原理...这两个方法不仅提供了基本的用户认证和注销功能,还支持自定义回调函数,使得开发者能够灵活地处理各种情况下的业务逻辑。这对于构建安全可靠的Web应用程序至关重要。
4. **$.ajax()**:更通用的AJAX方法,可以自定义请求的各个方面,包括HTTP方法、数据类型等。例如: ```javascript $.ajax({ url: 'url', type: 'POST', data: {key: value}, success: function(data) { // ...
在提供的代码片段中,我们可以看到一个名为`Common.js`的JavaScript通用库,包含以下主要功能: 1. **Trim(str)**:这个函数用于去除字符串两端的空格。通过`LTrim`和`RTrim`两个辅助函数实现,分别去除左侧和右侧...
本文将深入探讨如何使用JavaScript和jQuery库创建一个通用的、可复用的选项卡组件,以及涉及到的相关技术如CSS、AJAX和Web2.0设计理念。 首先,`标题`中的“一个用JS做的通用选项卡”指的是利用JavaScript编程语言...
- **callback**:可选参数,指定一个回调函数,当请求成功后执行该函数。 回调函数可以接收三个参数:`responseText`、`textStatus` 和 `XMLHttpRequest` 对象。其中 `responseText` 包含服务器返回的数据,`...
- **$.ajax()**:这是最通用的Ajax方法,可以完全自定义请求的所有选项。 - **$.get()**:用于发起GET请求,接收一个或多个参数,分别用于URL、数据、回调函数和类型。 - **$.post()**:类似$.get(),但用于发起POST...
2. `MyDate()`:这是一个自定义日期格式化函数,它接受两个参数,一个是格式字符串,另一个是可选的时间戳。默认情况下,它返回的是格林尼治标准时间的日期和时间,但你可以根据需要调整格式。 3. `GetAlabNum()`:...
例如,`ajax.js`可能是包含预设的Ajax函数的脚本文件,可能包含了创建XMLHttpRequest对象、处理请求和响应的通用功能。而`MyAjax.txt`可能是一个示例或者文档,详细解释了如何使用这个自定义的Ajax库。 在实际应用...
H-UI的通用JS代码建立在jQuery库之上,jQuery是JavaScript的一个强大插件,它简化了DOM操作、事件处理和动画效果。通过使用jQuery,开发者可以更加高效地编写代码,实现跨浏览器兼容性。 三、Layer弹层组件 Layer是...
ThinkPHP是一个流行的PHP框架,它提供了强大的功能和灵活性,使得开发人员可以方便地构建高效的应用程序。本知识点主要聚焦于ThinkPHP框架中结合Ajax实现的无刷新分页技术。 一、ThinkPHP框架基础 ThinkPHP是一个...