/**
* @author yli
* @date 2012-08-15
*/
var XmlHttp = {
get : "get",
post : "post",
reqCount : 4,
createXhr : function() {
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
},
ajax : function(_json) {
var url = _json["url"];
var callback = _json["callback"];
var async = (_json["async"] == undefined ? true : _json["async"]);
var error = _json["error"];
var params = _json["params"];
var method = (_json["method"] == undefined ? XmlHttp.post : _json["method"]).toLowerCase();
url = XmlHttp.serializeUrl(url);
params = XmlHttp.serializeParams(params);
if (method == XmlHttp.get && params != null) {
url += ("&" + params);
params = null; //如果是get请求,保证最终会执行send(null)
}
xmlhttp = XmlHttp.createXhr();
xmlhttp.open(method, url, async);
if (method == XmlHttp.post) {
xmlhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
}
var execount = 0;
// 异步
if (async) {
// readyState 从 1~4发生4次变化
xmlhttp.onreadystatechange = function() {
execount++;
// 等待readyState状态不再变化之后,再执行回调函数
if (execount == XmlHttp.reqCount) {
XmlHttp.execBack(xmlhttp, callback, error);
}
};
// send方法要在在回调函数之后执行
xmlhttp.send(params);
} else {
// 同步 readyState 直接变为 4
// 并且 send 方法要在回调函数之前执行
xmlhttp.send(params);
XmlHttp.execBack(xmlhttp, callback, error);
}
},
execBack : function(xmlhttp, callback, error) {
if (xmlhttp.readyState == 4
&& (xmlhttp.status == 200 || xmlhttp.status == 304)) {
callback(xmlhttp);
} else {
if (error) {
error(xmlhttp);
} else {
var errorMsg = "no error callback function!";
if(xmlhttp.responseText) {
errorMsg = xmlhttp.responseText;
}
alert(errorMsg);
// throw errorMsg;
}
}
},
serializeUrl : function(url) {
var cache = "cache=" + Math.random();
if (url.indexOf("?") > 0) {
url += ("&" + cache);
} else {
url += ("?" + cache);
}
return url;
},
serializeParams : function(params) {
var ud = undefined;
if (ud == params || params == null || params == "") {
return null;
}
if (params.constructor == Object) {
var result = "";
for ( var p in params) {
result += (p + "=" + params[p] + "&");
}
return result.substring(0, result.length - 1);
}
return params;
}
};
/*
** 测试
*/
// 执行成功的回调函数
function success(xmlhttp){
alert(xmlhttp.responseText);
}
//执行失败的回调函数
function error(xmlhttp){
alert(xmlhttp.responseText);
}
function testAjax() {
// get 请求
var url = "http://localhost:8080/WebDemo/UserServlet?name=yli&age=21";
XmlHttp.ajax({
url:url,
callback:success, // 成功回调函数,必须要写
error:error, // 失败回调函数,可以不写
async:true, // 默认就是 true
method:"get", // 默认是 post
params:{p1:"111",p2:"222"} // 即使是get请求,也可以通过 params 提交参数,会和url的参数合并
});
// post 请求
// var url = "http://localhost:8080/WebDemo/UserServlet";
// XmlHttp.ajax({
// url:url,
// callback:success, // 成功回调函数,必须要写
// params:{p1:"111",p2:"222"} // post请求,参数只能通过params提交
// });
}
分享到:
相关推荐
本文将深入探讨如何使用jQuery的ajax方法来提交表单,从而实现异步数据交换,提高用户体验。 首先,jQuery的$.ajax()函数是进行Ajax请求的核心,它允许我们与服务器进行异步数据通信。在“使用jQuery ajax提交表单...
实现JQuery+ajax+mock.js模拟注册,判断输入框是否输入正确
jQuery,作为一个广泛使用的JavaScript库,提供了简单易用的API来实现Ajax操作。然而,有时我们可能会遇到跨域问题,这是由于浏览器的安全策略限制了不同源之间的通信。在这种情况下,Iframe可以作为一种解决方案,...
jQuery通过封装了原生的XMLHttpRequest对象,使AJAX调用变得非常简单。使用`$.ajax()`方法是主要的实现方式: ```javascript $.ajax({ url: 'your_server_page.php', type: 'GET'或'POST', data: {param1: value...
【基于jQuery的Ajax聊天室程序】是一个典型的Web交互应用,它利用了Ajax技术来实现实时的、无需页面刷新的用户交流。Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下,能够更新部分网页...
JQueryAjax.html中的代码如下: ```html <title>JQueryAjax+PHP</title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.0.0.min.js"></script> 用户名:...
本篇文章将深入探讨如何利用jQuery和AJAX技术实现纯前端的分页功能,无需依赖后端服务器支持。 ### 1. jQuery和AJAX简介 jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画和Ajax交互。AJAX...
功能如下: ...运行效果如下: ...服务器端AjaxServer 代码如下: package com.ljq.test; import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import javax.se
在本文中,我们将深入探讨如何使用jQuery AJAX实现图片上传功能,同时结合无刷新预览和加载指示器(Loading)效果。 一、jQuery AJAX基础 在使用jQuery AJAX进行图片上传之前,我们需要了解其基本概念。AJAX代表...
本主题将深入探讨如何使用jQuery模拟AJAX关闭div窗口的效果。这种效果常见于弹窗对话框、提示框或者模态窗口的关闭,提供一种无刷新的用户体验。 首先,我们需要了解基本的HTML结构。一个简单的div窗口可能包含以下...
jQuery提供了便捷的$.ajax()函数来实现Ajax请求。然而,当涉及到跨域请求时,即从一个域名下的网页请求另一个域名的数据,浏览器会受到同源策略的限制,这可能导致安全问题。为了解决这个问题,现代浏览器支持CORS...
ASP.NET、jQuery 和 AJAX 结合使用可以创建动态、无刷新的网页应用,使得用户在上传文件时无需等待页面重新加载,提升用户体验。本教程通过一个名为 "jquery.uploadify.js" 的插件,演示了如何在 ASP.NET 环境下实现...
**Ajax 实现简单搜索功能:jQuery + ASPX** Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下与服务器进行数据交互,提供更好的用户体验。在这个案例中,我们将使用jQuery库来处理...
【Ajax与jQuery结合实现用户验证】 在网页开发中,实时验证用户输入是提高用户体验的重要手段。Ajax(异步JavaScript和XML)与jQuery的结合,能够实现无刷新验证,使得用户在提交表单前就能得到反馈,避免了不必要的...
在本文中,我们将深入探讨如何使用jQuery Progressbar与Ajax相结合,来实时展示后台处理任务的进度,特别是在一个基于Struts2框架的应用中。这个过程包括前端的jQuery Progressbar组件的设置,以及后端如何发送进度...
知识点二:通过AJAX实现数据请求 在提供的代码片段中,首先定义了一个点击事件处理器($("#btn-export").click(function() {...})),当用户点击id为btn-export的按钮时触发。在这个事件处理器中,我们首先设置了一...
在提供的压缩包文件`msmw_Jquery1.0`中,可能包含的是一个模拟jQuery实现的源码或示例项目,供我们参考和学习。通过阅读和分析这些代码,我们可以更深入地了解模拟jQuery的各种细节和技巧。 总之,jQuery模拟是一个...
总结来说,使用 AJAX 和 jQuery 模拟股票实时显示功能,涉及到前端与后端的数据交互、JSON 数据解析、DOM 操作以及可能的 UI 效果实现。这是一种常见的 web 开发技巧,有助于提升用户体验,避免页面频繁刷新。通过...
本文档将详细介绍如何使用jQuery、Ajax、JSP与Servlet来实现一个简单的二级级联菜单功能。该功能常见于许多Web应用程序中,如用户管理、权限分配等场景。通过这种方式可以有效地组织大量的数据项,提高用户体验。 ...