function openLink(o){
var XHR,
config = (typeof o === 'object' && o!=null)?o : {},
scope = config.scope||window,
method = config.method||'GET',
cb = typeof config.callback === 'function' ? config.callback : function(){},
url = config.url,
params = config.params||{},
p = null,
addURLParam = function(url,key,value){
url += (url.indexOf('?') == -1 ? '?' : '&');
url += encodeURIComponent(key) + '=' + encodeURIComponent(value);
return url;
},
timeout = 30000;//30s
if(typeof url !== 'string'){
throw new Error('配置的请求地址错误!');
}
if(typeof XMLHttpRequest != 'undefined'){
XHR = new XMLHttpRequest();
}else if(typeof ActiveXObject != 'undefined'){
var versions = ['MSXML2.XMLHTTP.3.0','Msxml2.XMLHTTP.6.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
for(var i=0,len=versions.length;i<len;i++){
try{
XHR = new ActiveXObject(versions[i]);
break;
}catch(ex){
}
}
}else{
throw new Error('您的浏览器不能创建XHR对象!');
}
var t = setTimeout(function(){
XHR.abort();
throw new Error('timeout!');
},timeout);
XHR.onreadystatechange = function(){
if(XHR.readyState == 4){
if((XHR.status >= 200 && XHR.status < 300) || XHR.status == 304){
//success
//XHR.responseText
clearTimeout(t);
cb.call(scope,XHR.responseText);
}else{
//exception
throw new Error('Request is unsuccessfull: '+ XHR.status);
}
}
}
if(method.toUpperCase() == 'GET'){
for(var f in params){
url = addURLParam(url,f,params[f]);
}
}else if(method.toUpperCase() == 'POST'){
var a = [];
for(var f in params){
a.push(f+'='+encodeURIComponent(params[f]));
}
p = a.join('&');
}
XHR.open(method,url,true);
XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
XHR.send(p);
}
使用:
<script type="text/javascript">
openLink({
method : 'post',
url : 'data/test.do',
params : {e:'中文abc123',r:5},
callback : function(responseText){
var o = eval('('+responseText+')');
alert(o.success);
}
});
</script>
分享到:
相关推荐
当用户选择一条备忘并点击“编辑”按钮时,前端通过Ajax获取选定备忘的详细信息,填充到表单中,用户修改后再次提交,后端更新数据库中的对应记录。 删除备忘录通常需要确认操作,以防误删。用户选择要删除的备忘,...
JSP作为视图层负责渲染页面,Servlet或控制器处理用户请求和业务逻辑,而模型层则封装数据访问和业务对象。这样可以使代码结构清晰,易于扩展。 对于日期选择,可以使用JavaScript库如jQuery UI的Datepicker组件,...
2. **Ajax**:如果备忘录需要实时同步到服务器,开发者可能使用Ajax异步请求,通过$.ajax()或者$.getJSON()等方法与后台交互,实现数据的增删改查。 3. **CSS3动画**:为了提升用户体验,日期选择器的弹出、隐藏及...
4. **Web开发**:对于前端开发者,HTML、CSS和JavaScript是基础,备忘单会涵盖标签、选择器、布局技巧、DOM操作和AJAX请求等内容。对于后端开发者,常见框架如Express.js、Django、Spring Boot的API调用和路由设置也...
例如,jQuery的`$.ajax()` 方法封装了Ajax操作,Vue.js则提供了数据绑定和组件化的功能,使得日历应用的逻辑更加清晰。 总结起来,《JS日历便利贴》是一个结合了HTML、CSS、JavaScript以及可能的前端库技术的Web...
- 回调函数:常见于异步操作,如事件处理和Ajax请求。 - Promise:用于管理异步操作,提供链式调用和错误处理。 - async/await:基于Promise的语法糖,使得异步代码更接近同步写法。 8. **ES6+新特性**: - 类...
"BlueMoon: BlueMoon Js是初学者的Javascript备忘单"这个资源可能是为了帮助新手快速掌握JavaScript的基础知识,以便他们能够创建功能丰富的网页或应用程序。 JavaScript语法基础: 1. 变量:JavaScript中的变量...
可能还涉及AJAX技术,实现页面无刷新的数据更新。 5. **权限管理**:对于一个开源系统,权限控制是非常重要的,可能会有用户注册、登录功能,以及不同角色的权限分配。 6. **API调用和处理**:系统可能需要处理...
在JavaScript中,设计模式可以帮助我们解决模块化、封装、继承和多态等面向对象编程的关键问题,以及处理异步操作和事件驱动编程等特性。 书中的内容可能涵盖了以下几个主要的设计模式类别: 1. 创建型模式:如...
命令模式是一种行为设计模式,它把一个请求封装为一个对象,从而使我们可用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。例如,在文件提供的示例中,`service` 方法接收一个 `...
- 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 - 观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的...
18. **备忘录模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 19. **观察者模式**:定义对象间的一种一对多的依赖关系,当一个...
17. **备忘录模式(Memento)**:在不破坏封装性的前提下,捕获一个对象的状态并在需要时恢复它。在J2EE中,可以用于保存用户会话状态。 18. **观察者模式(Observer)**:定义对象之间的一对多依赖关系,当一个对象的...
7. **备忘录模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 8. **解释器模式**:提供一个解析表达式的方式,为特定语言或领域定义一个文法,并...
这种特效通常用于创建提醒、记录备忘或者展示动态信息,极大地提升了网站的用户体验。 首先,我们来了解jQuery的核心概念。jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。...
命令模式将请求封装为一个对象,以便使用不同的请求、队列请求或支持撤销操作。责任链模式使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合。备忘录模式记录对象的内部状态,以便以后恢复。状态模式...
- **面向对象**:介绍类、对象、继承、封装、多态等面向对象编程的基本原理。 - **异常处理**:学习如何在 Java 程序中有效地处理错误和异常。 - **JDK 提供的类库**: - **IO 操作**:讲解如何进行文件读写、字符...
使用其间也有一点点心得,其实这些心得,在jquery的文档上面也可能有讲,不过还是记下来,以备忘罢。三层架构, 企业库(Enterprise Library)是微软的模式与实践(Patterns & Practices)的下一代应用程序块...
它通过封装了DOM操作、事件处理、动画和Ajax交互等功能,极大地简化了JavaScript编程,提升了开发效率。在本例中,Jquery用于简化对HTML元素的操作以及控制时钟特效的实现逻辑。 ### 语音提醒功能实现 在实现时钟...