- 浏览: 97291 次
- 性别:
文章分类
最新评论
-
chinrui:
iamaj2eeprogrammer 写道顶一个 。。。。。。 ...
日志规范 -
iamaj2eeprogrammer:
顶一个 。。。。。。。。。。
日志规范 -
chinrui:
如果Eclipse安装过Android的开发插件,可能会有一定 ...
使用Ant编译生成Hadoop的Eclipse插件
使用XMLHttpRequest对象进行异步的操作
效果:输入时,进行同步的用户名检验
第一步:静态的html页面,作为进行检验的对象,当光标离开输入框的时候,触发validate()方法,查找数据库进行检验
<td>用户名:</td> <td> <input type=text name=username id=userid onblur="validate()" /> <div id=usermsg ></div> </td>
第二步:编写validate()方法
<script type="text/javascript" > var req; function validate() { //拿到输入用户名的节点 var username = document.getElementById("userid"); //写明请求的url地址,使用encodeURI/escape/encodeURIComponent方法对特殊字符进行编码 var url = "validate.jsp?id=" + encodeURI(username.value); //根据不同的操作系统创建不同的XMLHttpRequest对象 if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } //使用open方法进行请求,第三个参数如果是true表示异步,false表示同步 req.open("get", url , true); //onreadystatechange属性相当于监听器,此处相当于函数指针,触发时调用callback()方法 req.onreadystatechange = callback; req.send(null); } function callback() { //请求分为四个状态,1:已经连接上,2:连接上并成功发送请求,3:进行请求处理的过程中,4:请求处理完成 if(req.readyState == 4) { //确定请求的状态为已经完成 if(req.status == 200) { //确定请求的结果是正确的,而不是tomcat自己生成的结果 //对响应的数据进行处理,此处响应的是XML页面 var node = req.responseXML.getElementsByTagName("msg")[0]; var msg = node.childNodes[0].nodeValue; setMsg(msg); } } } //此方法根据响应的数据,进行相应的界面显示 function setMsg(msg) { var node = document.getElementById("usermsg"); if(msg == "valid") { node.innerHTML = "<font color='green' >可以注册</font>"; } else { node.innerHTML = "<font color='red' >用户名已经被注册过</font>"; } } </script>
使用AJAX产生二级菜单的联动
准备产生联动效果的静态页面的代码:
<form name="form2" method="post" > <select name="category1" onchange="changeCategory()" > <option selected >--选择一级目录--</option> <option value=93 >电脑/软件/网络/办公</option> <option value=95 >珠宝手饰/银饰礼品</option> <option value=96 >运动户外/休闲</option> </select> <select name="category2" > <option selected >--选择二级目录--</option> </select> </form>
第一种方法:不使用AJAX产生二级联动的效果,直接从数据库中读出所有的数据:
第一:在客户端动态的生成javascript代码
<%! private String getSecondCategoriesStr(List<Category> categories , Category category) { StringBuilder str = new StringBuilder(); str.append("if(document.form2.category1.value == " + category.getId() + ") {\n"); str.append("subNode.options.length = 1;\n"); for(int i = 0; i < categories.size(); i++) { Category c = categories.get(i); if(c.getPid() == category.getId()) { str.append("var selOption" + i + " = document.createElement('option');\n"); str.append("selOption" + i + ".innerText = '" + c.getName() + "';\n"); str.append("selOption" + i + ".value = " + c.getId() + ";\n"); str.append("subNode.appendChild(selOption" + i + ");\n\n"); } } str.append("}\n"); return str.toString(); } %>
第二步:编写javascript代码做动态展示
<script type="text/javascript"> <!-- function changeCategory() { var subNode = document.form2.category2; <%=str %> } --> </script>
第二种方法:使用AJAX产生返回作息为非xml的二级联动
<script type="text/javascript"> <!— //向处理的文件发送请求,进行异步处理 var req; function changeCategory() { var id = document.form2.category11; url = "getchildcategory.jsp?id=" + escape(id.value); if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("microsoft.XMLHTTP"); } req.open("get", url, true); req.onreadystatechange = callback; req.send(null); } //监听处理状态,调用处理反馈的函数 function callback() { if(req.readyState == 4) { if(req.status == 200) { parse(req.responseText); } } } //编写处理返回信息的函数,对返回的信息进行解析 function parse(msg) { var subNode = document.form2.category22; //使用正则表达式,去除首尾的空格 msg = msg.replace(/(^\s+)|(\s+$)/g,""); //对返回信息为空串的信息进行特殊处理 if(msg == null || new String(msg) == "") { subNode.options.length = 1; } else { var categories = msg.split(","); subNode.options.length = 1; for(var i = 0; i < categories.length; i ++) { var categoryProperty = categories[i].split("_"); var id = categoryProperty[0]; var name = categoryProperty[1]; var selOption = document.createElement("option"); selOption.innerText = name; selOption.value = id; subNode.appendChild(selOption); } } } --> </script>
编写处理请求的函数,处理请求并返回处理结果
<%@ page import="yuan.rui.love.*" %> <%@ page import="java.util.*" %> <% String strId = request.getParameter("id"); int id = -1; if(strId != null && !strId.equals("")) { id = Integer.parseInt(strId); } List<Category> categories = new ArrayList<Category>(); categories = Category.getChilds(id); StringBuilder strBuild = new StringBuilder(); for(int i = 0; i < categories.size(); i++) { Category c = categories.get(i); if(i != categories.size() - 1) { strBuild.append(c.getId() + "_" + c.getName() + ","); } else { strBuild.append(c.getId() + "_" + c.getName()); } } response.setContentType("text/xml;charset=gbk"); response.setHeader("Cache-Control", "no-store"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server response.getWriter().write(strBuild.toString()); %>
第三种方法:在服务器端生成javascript代码,在用户端直接执行
<script type="text/javascript"> <!-- var req; function changeCategory() { var id = document.form2.category11; url = "getchildcategory_1.jsp?id=" + escape(id.value); if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("microsoft.XMLHTTP"); } req.open("get", url, true); req.onreadystatechange = callback; req.send(null); } function callback() { if(req.readyState == 4) { if(req.status == 200) { var subNode = document.form2.category22; eval(req.responseText); } } } --> </script>
处理请求的程序,服务器端动态地生成javascript代码
<%@ page import="yuan.rui.love.*" %> <%@ page import="java.util.*" %> <% String strId = request.getParameter("id"); int id = -1; if(strId != null && !strId.equals("")) { id = Integer.parseInt(strId); } List<Category> categories = new ArrayList<Category>(); categories = Category.getChilds(id); StringBuilder strBuild = new StringBuilder(); strBuild.append("subNode.options.length = 1;\n"); for(int i = 0; i < categories.size(); i++) { Category c = categories.get(i); strBuild.append("var selOption" + i + " = document.createElement('option');\n"); strBuild.append("selOption" + i + ".innerText = '" + c.getName() + "';\n"); strBuild.append("selOption" + i + ".value = " + c.getId() + ";\n"); strBuild.append("subNode.appendChild(selOption" + i + ");\n"); } response.setContentType("text/html;charset=gbk"); response.setHeader("Cache-Control", "no-store"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server response.getWriter().write(strBuild.toString()); %>
第四种方法:使用AJAX产生返回信息为xml的二级联动
<script type="text/javascript"> <!-- var req; function changeCategory() { var id = document.form2.category11; url = "getchildcategory_2.jsp?id=" + escape(id.value); if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("microsoft.XMLHTTP"); } req.open("get", url, true); req.onreadystatechange = callback; req.send(null); } function callback() { if(req.readyState == 4) { if(req.status == 200) { parseXML(req.responseXML); } } } function parseXML(xml) { var categories = xml.getElementsByTagName("categories")[0]; var subNode = document.form2.category22; subNode.options.length = 1; for(var i = 0; i < categories.childNodes.length; i++) { var category = categories.childNodes[i]; var id = category.childNodes[0].childNodes[0].nodeValue; var name = category.childNodes[1].childNodes[0].nodeValue; var selOption = document.createElement("option"); selOption.innerText = name; selOption.value = id; subNode.appendChild(selOption); } } --> </script>
处理请求并返回格式为xml处理信息的页面:
<%@ page import="yuan.rui.love.*" %> <%@ page import="java.util.*" %> <% String strId = request.getParameter("id"); int id = -1; if(strId != null && !strId.equals("")) { id = Integer.parseInt(strId); } List<Category> categories = new ArrayList<Category>(); categories = Category.getChilds(id); StringBuilder strBuild = new StringBuilder(); for(int i = 0; i < categories.size(); i++) { Category c = categories.get(i); strBuild.append("<category><id>" + c.getId() + "</id><name>" + c.getName() + "</name></category>"); } //xml文件中必需有要节点,最好也写上头文件 strBuild.insert(0,"<?xml version='1.0' encoding='gb2312'?><categories>"); strBuild.append("</categories>"); response.setContentType("text/xml;charset=gbk"); response.setHeader("Cache-Control", "no-store"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server response.getWriter().write(strBuild.toString()); %>
发表评论
-
PagingToolbar带参数的分页
2013-07-31 21:59 936PagingToolbar带参数的分 ... -
如何指定struts2返回我们需要的json类型数据?
2013-07-29 18:58 908如何指定struts2返回我们需要的json类型数据? ... -
Struts与Extjs的整合
2013-07-25 18:46 901Struts与Extjs的整合 1、引入以下Jar包 ... -
将对象转换成XML文档形式
2013-07-25 17:25 923将对象转换成XML文档形式 1、第一步:引入以下包 - ... -
Extjs中使用AsyncTreeNode生成树
2013-07-22 21:43 1808Extjs中使用AsyncTreeNode ... -
JSON解析
2013-05-22 18:08 1151AJAX里面的JSON解析 public void doPo ... -
JSON
2013-05-22 15:58 2088JSON的用法 1、以JSON形式定义一个对象 window. ... -
XMLHttpRequest
2013-05-19 19:21 869AJAX关于XMLHttpRequest的解释 1、所有解释在 ... -
javascript使用window.opener在两个页面之间传递值
2013-05-18 11:47 2705javascript使用window.opener ... -
showModalDialog的简单使用
2013-05-17 23:59 1142showModalDialog的简单使用 1、要通过另外一个网 ... -
JavaScript入门
2013-04-27 08:36 956Javascript是一种弱类型的 ...
相关推荐
在这个"Ajax入门例子项目"中,我们将深入探讨Ajax的基础概念、工作原理以及如何创建简单的Ajax应用。 1. Ajax基础概念: - 异步:Ajax的主要特性是异步通信,意味着用户在请求发送后可以继续浏览网页,而无需等待...
**Ajax入门经典源代码概述** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术的核心在于利用JavaScript与服务器进行异步数据交互,结合XML或其他...
《ASP.NET 2.0 AJAX入门经典》这本书很可能包含了多个示例,演示如何使用AJAX技术来增强ASP.NET 2.0应用程序的交互性。这些实例可能涵盖用户界面改进、数据异步加载、实时验证等多个场景,帮助读者掌握实际开发技巧...
ASP.NET_AJAX入门系列:概述.doc ASP.NET_AJAX_在Web开发中的应用.doc ASP.NET_AJAX入门系列:Timer控件简单使用.doc ASP.NET_AJAX入门系列:UpdateProgress控件简单介绍.doc ASP.NET_AJAX入门系列:使用...
**Ajax入门:无刷新技术与JavaScript中的Ajax** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器交换数据并局部更新页面,使得用户...
ASP.NET AJAX是一个完整的开发框架,其服务器端编程模型相对于客户端编程模型较为简单,而且容易与现有的ASP.NET程序相结合,通常实现复杂的功能只需要在页面中拖几个控件,而不必了解深层次的工作原理,除此之外...
Ajax,即Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。Ajax允许网页与服务器之间进行交互,实现数据的动态加载,提高了用户体验。 在...
**Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个...通过阅读这份"ajax入门教程PDF",初学者将能够快速理解Ajax的工作方式,掌握基本的Ajax编程技能,从而在实际项目中提升网页的交互性和动态性。
总的来说,这个"AJAX入门实例"旨在帮助初学者理解AJAX的基本概念和工作流程,以及如何在ASP.NET环境中实现它。通过学习这个实例,你可以掌握创建异步Web应用的基本技巧,提高用户体验,并为后续更复杂的AJAX应用场景...
**Ajax入门**通常涉及以下几个关键概念: 1. **XMLHttpRequest对象**:它是Ajax的核心,用于在后台与服务器进行通信。创建XMLHttpRequest对象后,可以通过它的open()方法设置请求类型(GET或POST)、URL以及是否异步...
**Ajax 入门经典——掌握Ajax核心技术** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,极大地...
在《Ajax入门教程》中,可能包含了一系列经典的小例子,比如: 1. **实时搜索建议**:用户在输入框中输入字符时,利用Ajax动态向服务器发送请求,获取匹配的搜索建议,并即时显示在下拉框中。 2. **无刷新分页**:...
通过这个简单的Ajax入门实例,你可以理解如何利用Ajax实现页面内容的异步加载。随着经验的增长,还可以学习更高级的技巧,如使用jQuery的$.ajax()函数、Promise或现代的fetch API,以及错误处理和进度回调等。
**Ajax入门视频教程** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它的核心在于JavaScript,通过XMLHttpRequest对象与服务器进行异步数据交互,从而实现...
### 前端技术AJAX入门精讲 #### 一、AJAX概述 **AJAX**(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现...
**Ajax入门视频教程详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术使得Web应用程序能够更快、更高效地运行,提升了用户体验,因为它允许...
ajax入门 ajax入门 ajax入门是初学者的宝典 ajax入门 ajax入门 ajax入门是初学者的宝典 ajax入门 ajax入门 ajax入门是初学者的宝典 ajax入门 ajax入门 ajax入门是初学者的宝典
ajax入门书籍 ajax入门到精通 好用又源码