`
leiwuluan
  • 浏览: 705215 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

一个简单实现ajax的实例

    博客分类:
  • ajax
阅读更多
 Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。
Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写。 
Ajax 做 什么 ?
Ajax 尝试建立桌面应用程序的功能和交互性,与不断更新的 Web 应用程序之间的桥梁。可以使用像桌面应用程序中常见的动态用户界面和漂亮的控件,不过是在 Web 应用程序中。
 
1 创建新的 XMLHttpRequest 对象 
	以支持多种浏览器的方式创建 XMLHttpRequest 对象 

function createXmlHttpRequest(){
	var xmlHttp = false;
	try { 
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
	} catch (e){
		try {     
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		} catch (e2){     
			xmlHttp = false; 
		} 
	}
	if (!xmlHttp && typeof XMLHttpRequest != 'undefined'){ 
		xmlHttp = new XMLHttpRequest(); 
	}
}
 
 Ajax 世界中的请求/响应
发出请求
Ajax 应用程序中基本都雷同的流程:
 1、从 Web 表单中获取需要的数据。
 2、建立要连接的 URL。
 3、打开到服务器的连接。
 4、设置服务器在完成后要运行的函数。
 5、发送请求。
XMLHttpRequest 对象 详解
·open():建立到服务器的新请求。
·send():向服务器发送请求。
·abort():退出当前请求。
·readyState:提供当前 HTML 的就绪状态。
·responseText:服务器返回的请求响应文本。

HTTP 就绪状态
·0:请求没有发出(在调用 open() 之前)。
·1:请求已经建立但还没有发出(调用 send() 之前)。
·2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
·3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。
·4:响应已完成,可以访问服务器响应并使用它。
<--
您也许期望任务就绪状态从 0 到 1、2、3 再到 4,但实际上很少是这种情况。
一些浏览器从不报告 0 或 1 而直接从 2 开始,然后是 3 和 4。其他浏览器则报告所有的状态。
还有一些则多次报告就绪状态 1。在上一节中看到,服务器多次调用 updatePage(),
每次调用都会弹出警告框 —— 可能和预期的不同!
-->
HTTP 状态代码
401:未经授权
403:禁止
404:没找到
200:一切正常
301:永久移动
302:找到(请求被重新定向到另外一个 URL/URI 上)
305:使用代理(请求必须使用一个代理来访问所请求的资源)
利用 DOM 进行 Web 响应
El.innerText
El. innerHTML

DWR: Easy Ajax to Java
Direct Web Remoting
DWR allows Javascript in a browser to interact with Java on a server and helps you manipulate web pages with the results.
DWR consists of two main parts:
1 A Java Servlet running on the server that processes requests and sends responses back to the browser.
2 JavaScript running in the browser that sends requests and can dynamically update the webpage.
下面来看一看一个简单的的ajax实例吧:
ajax 有两个方法。一个是处理方法。一个是回调的方法,也就是用来处理html页面用的。
我用的是一个带jar包的ajax 的实例:
说到带jar包那是做之前不用说你 也知道。加上一个dwr的jar包吗?加jar包和struts一样把jar 包放在WEB-INF/lib/就可以了。说了和struts 一样。那一定也要有一个xml文 件了。在WEB-INF/加一个dwr.xml文件。
这个文件了一定要在web.xml中配了。也配一个.怎么配呢?说了和struts一样了。那就是配一个servlet了吗。
<servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

    <!-- This should NEVER be present in live -->
    <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
 接下来就是就要使用dwr.xml.文件了。
先通过配一个java类吧来学一学这个文件吧。
就像struts中的action 方式一样。如下:
<create creator="new" javascript="User">
      <param name="class" value="com.dwr.User"/>
</create>
 creator:方式
javascript:引用的对象名
class:是普通类》(可以是servlet.action)
value:类的路径
简单的一个类:
public class User {
	public String getUser(String userId){
		StringBuffer user=new StringBuffer();
		
		Connection conn=DBManager.getConnection();
		String sql="select * from orderitem where itemId=?";
		try {
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setInt(1, Integer.parseInt(userId));
			ResultSet rs=ps.executeQuery();
			if(rs.next()){
				user.append("{item_id:'");
				user.append(rs.getInt("itemId"));
				user.append("',item_name:'");
				user.append(rs.getString("itemName"));
				user.append("',unit_num:'");
				user.append(rs.getInt("unitNum"));
				user.append("',unit_price:'");
				user.append(rs.getDouble("unitPrice"));
				user.append("',sum:'");
				user.append(rs.getDouble("sum"));
				user.append("',order_id:'");
				user.append(rs.getInt("orderId"));
				user.append("'}");
			}else{
				user=new StringBuffer("{item_id:null,item_name:null,unit_num:0,unit_price:0,sum:0.0,order_id:null}");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(user.toString());
		return user.toString();
	}
}
 现在就测试一下这个类有没有注册成功:
打开火福。在地址栏上输入:http://localhost:8080/工程名/dwr
注册成功就会在这个页面上显示这个类了。

Classes known to DWR:

  • User (com.dwr.User)
然后点击打开这个类。打两个javascript 地址连接copy到jsp页面去就可以通过javascript访问java类了。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Methods For: User (com.dwr.User)

To use this class in your javascript you will need the following script includes:

  <script type='text/javascript' src='/ajax_struts_javascript/dwr/interface/User.js'></script>
  <script type='text/javascript' src='/ajax_struts_javascript/dwr/engine.js'></script>

In addition there is an optional utility script:

  <script type='text/javascript' src='/ajax_struts_javascript/dwr/util.js'></script>

Replies from DWR are shown with a yellow background if they are simple or in an alert box otherwise.
The inputs are evaluated as Javascript so strings must be quoted before execution.

There are 10 declared methods:

  • getUser( ); <script type="text/javascript"></script>
  • wait( ); <script type="text/javascript"></script>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
把上面红色字。copy天jsp页面就可以使用了。如下红色两行
 <head>
    <title>My JSP 'index.jsp' starting page</title>
	<script type='text/javascript' src='/ajax_struts_javascript/dwr/interface/User.js'></script>
  	<script type='text/javascript' src='/ajax_struts_javascript/dwr/engine.js'></script>
	<script type="text/javascript" src="<%=path%>/js/index.js"></script>
  </head>
 
下面就写一个简单的js代码调用了。
前面已经说过了。就两个方法。一个是触发方法,另一个是回调方法;
function getUser(id){
	User.getUser(id,updatdPage);
}
function updatdPage(userInfo){
	var userO=eval("("+userInfo+")");
	document.getElementById("item_id").value=userO.item_id;
	document.getElementById("item_name").value=userO.item_name;
	document.getElementById("unit_num").value=userO.unit_num;
	document.getElementById("unit_price").value=userO.unit_price;
	document.getElementById("sum").value=userO.sum;
	
}
 getUser(id)是一个业务处理方法,而下面的一个updatdPage(userInfo)则是加调方法对jsp页面时行处理的。
在这里有人可能会迷惑updatdPage(userInfo)中的userInfo是从哪儿来的呢。干么的呢。你调业务处理类时返的数据就会被userInfo获取到。就可以对数据进行操作了。
这就是一个简单的实例。可能说的不好。还是自己看实例吧
分享到:
评论

相关推荐

    ajax实例的简单实现

    总结起来,这个简单的AJAX实例展示了如何通过JavaScript与PHP交互,实现在不刷新页面的情况下获取并显示服务器端数据。通过这种方式,我们可以创建更加用户友好的交互式Web应用,提升用户体验。在实际项目中,可以...

    一个简单的Ajax实例

    总结来说,这个简单的Ajax实例展示了如何使用JavaScript和ASP创建一个基本的异步数据交换。通过理解Ajax的工作机制和这个实例,开发者可以进一步学习更复杂的Ajax应用,如发送POST请求、处理错误、使用JSON数据格式...

    一个个人编写的简单的Ajax实例。eclipse开发

    在这个个人编写的Ajax实例中,开发者可能实现了一个简单的功能,比如通过Ajax获取数据并在页面上动态显示。由于没有提供具体的代码,我们无法深入讨论细节,但上述内容概述了Ajax的基本原理和开发过程。在实际项目中...

    简单ASP+AJAX实例

    "简单ASP+AJAX实例"是一个教学资源,旨在帮助新手了解如何结合ASP和AJAX来构建无刷新请求功能。在这样的实例中,通常会包含以下几个部分: 1. **ASP后端处理**:使用ASP接收来自客户端的AJAX请求,处理数据(例如...

    简单的Ajax实例(JSP)

    这个简单的Ajax实例是基于JSP(JavaServer Pages)实现的,它主要用于提升用户体验,通过异步方式与服务器进行数据交互,使得用户在提交表单或执行某些操作时,页面可以保持其当前状态,而只需要更新需要变动的部分...

    完整C#ajax简单实现实例

    在这个"完整C# Ajax简单实现实例"中,我们将会探讨如何使用C#后端配合Ajax前端来实现这一功能。 首先,让我们理解C#在Ajax中的作用。在ASP.NET框架中,C#是常用的服务器端编程语言,用于处理业务逻辑和数据库交互。...

    一个简单的AJAX实例

    至此,我们就完成了一个简单的AJAX实例。这个实例展示了如何使用JavaScript发起异步请求,以及如何在服务器端处理请求并在前端显示结果。通过这种方式,AJAX极大地提高了Web应用程序的用户体验,因为它能够在不刷新...

    Ajax 操作实例 ASP.NET实例

    UpdatePanel是一个服务器控件,它可以包裹其他控件,并在后台执行操作时控制哪些部分应进行异步更新。在GridView所在的区域添加UpdatePanel,可以确保只有GridView在更新数据时才会刷新。 接着,我们配置Ajax控件...

    Ajax实例 Ajax实例

    一个简单的Ajax GET请求示例如下: ```javascript // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 监听状态变化 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status...

    asp.net ajax一个实例

    描述中的“简单不错”可能是指一个易于理解和实现的示例。这通常包括一个触发异步请求的按钮,一个UpdatePanel,以及一个处理服务器端数据的代码段。当用户点击按钮时,ASP.NET AJAX通过AJAX调用向服务器发送请求,...

    AJAX简单实例(.net)

    下面是一个简单的.NET AJAX实例: 1. 首先,在.aspx页面上添加ScriptManager和UpdatePanel: ```html &lt;asp:ScriptManager ID="ScriptManager1" runat="server"&gt;&lt;/asp:ScriptManager&gt; ...

    ajax+json实例

    在"JsonDemo"项目中,可能包含了一个简单的AJAX+JSON示例。客户端可能有一个HTML页面,通过JavaScript调用AJAX发送请求,服务器端使用.NET处理请求,将数据以JSON格式返回。例如,一个简单的获取用户信息的接口: `...

    简单Ajax实例AjaxSample

    这个简单的Ajax实例“AjaxSample”旨在演示如何通过JavaScript实现异步数据交换,从而提升用户体验,减少页面刷新带来的延迟感。 在Ajax的核心概念中,有以下几个关键组成部分: 1. **XMLHttpRequest对象**:这是...

    JS使用AjAX实例,JQUERY使用AJAX实例

    AjaxPro是一个开源的.NET AJAX框架,它提供了一种简单的方式来创建异步控件。使用AjaxPro,你可以直接将服务器端的方法标记为异步,而无需编写客户端的AJAX代码。 1. 安装AjaxPro库并引用到项目中。 2. 在服务器端...

    asp+jquery ajax实例源码,添加,删除,修改,分页

    综上所述,这个"asp+jquery ajax实例源码"展示了如何利用ASP作为服务器端语言处理数据,结合jQuery的AJAX功能,实现无刷新的交互体验,优化用户在添加、删除、修改和分页操作中的浏览感受。通过学习和理解这个实例,...

    asp.net ajax简单应用实例

    在这个"asp.net ajax简单应用实例"中,我们将探讨如何利用ASP.NET AJAX实现一个功能:当用户在下拉框中选择不同的选项时,页面上的某个Label控件的值会相应改变,而无需整个页面重新加载。 首先,`Default.aspx`是...

    ajax实例 ajax实例

    jQuery 是一个广泛使用的 JavaScript 库,它简化了 DOM 操作、事件处理以及包括 Ajax 在内的各种功能。 在 jQuery 中,实现 Ajax 请求非常简单,主要依赖于 `$.ajax()`、`$.get()` 和 `$.post()` 函数。这里我们将...

    Ajax实例和实现

    在本教程中,我们将深入探讨Ajax的基础知识、工作原理以及如何实现一个简单的Ajax实例。 ### 一、Ajax基础知识 1. **异步通信**:Ajax的最大特点就是异步,意味着用户可以继续浏览网页,而后台则在处理请求并获取...

    datatables使用ajax实例

    在本实例中,`DTAjaxTest`项目包含了一个具体的实现。首先,你需要在eclipse中导入这个项目,确保你已经安装了相应的Java和Web开发环境。项目的结构可能包含以下关键文件: 1. HTML文件:通常名为`index.html`,...

Global site tag (gtag.js) - Google Analytics