`
walsh
  • 浏览: 433212 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

使用XMLHttpRequest对象发送请求的基本步骤如下

阅读更多
使用XMLHttpRequest对象发送请求的基本步骤如下:
  1. 为得到XMLHttpRequest对象实例的一个引用,可以创建一个新的实例,也可以访问包含有XMLHttpRequest实例的一个变量。
  2. 告诉XMLHttpRequest对象,哪个函数会处理XMLHttpRequest对象状态的改变,为此要把对象的onreadystatechange属性设置为指向JavaScript函数的指针。
  3. 指定请求的属性。XMLHttpRequest对象的open()方法会指定将发出的请求。open()方法取3个参数:一个是指示所用方法(通常是GET或POST)的串;一个是表示目标资源URL的串;一个是Boolean值,指示请求是否是异步的。
  4. 将请求发送给服务器。XMLHttpRequest对象的send()方法把请求发送到指定的目标资源。send()方法接受一个参数,通常是一个串或一个DOM对象。这个参数作为请求体的一部分发送到目标URL。当向send()方法提供参数时,要确保open()中指定的方法是POST。如果没有数据作为请求体的一部分被发送,则使用null。
  这些步骤很直观:你需要XMLHttpRequest对象的一个实例,要告诉它如果状态有变化该怎么做,还要告诉它向哪里发送请求以及如何发送请求,最后还需要指导XMLHttpRequest发送请求。不过,除非你对C或C++很了解,否则可能不明白函数指针(function pointer)是什么意思。
  函数指针与任何其他变量类似,只不过它指向的不是像串、数字、甚至对象实例之类的数据,而是指向一个函数。在JavaScript中,所有函数在内存中都编有地址,可以使用函数名引用。这就提供了很大的灵活性,可以把函数指针作为参数传递给其他函数,或者在一个对象的属性中存储函数指针。
  对于XMLHttpRequest对象,onreadystatechange属性存储了回调函数的指针。当XMLHttpRequest对象的内部状态发生变化时,就会调用这个回调函数。当进行了异步调用,请求就会发出,脚本立即继续处理(在脚本继续工作之前,不必等待请求结束)。一旦发出了请求,对象的readyState属性会经过几个变化。尽管针对任何状态都可以做一些处理,不过你最感兴趣的状态可能是服务器响应结束时的状态。通过设置回调函数,就可以有效地告诉XMLHttpRequest对象:“只要响应到来,就调用这个函数来处理响应。”

例子:一个简单的表单提交,表单数据提交后,会在当前页面显示已经提交的数据信息
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax的简单应用(提交表单)</title>
<script type="text/javascript">
	var xhr;
	var outMsg = "";
	
	//-----------------获得XMLHttpRequest对象---------------------------
	function createXMLHttpRequest() {
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
	    }catch(e) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e) {
				try {
					xhr = new XMLHttpRequest();
				}catch(e) {
				}
			}
		}
	}
	
	//-------------------------------------------------------------
	function createQUeryString() {
		var userName = document.getElementById("userName").value;
		var queryString = "userName="+userName;
		return queryString;
	}
	
	function doRequest() {
		createXMLHttpRequest();//获得XMLHttpRequest对象
		var queryString = "HelloAjaxJava1?";
		queryString = queryString+createQUeryString();
		xhr.onreadystatechange = handleStateChange;//定义事件处理器,此处理器将在服务器端返回数据时自动被触发执行
		xhr.open("POST",queryString,true);//与服务器连接并发送
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
		xhr.send(null);
	}

	
	function handleStateChange() {
		if(xhr.readyState==4) {//4表示数据已经调用完成
			if(xhr.status==200) {//HTTP的状态码
				parseResults();
			}
		}
	}
	
	function parseResults() {
		var responseDiv = document.getElementById("serverResponse");//获得Div对象的元素
		if(responseDiv.hasChildNodes()) {
			responseDiv.removeChild(responseDiv.childNodes[0]);
		}
		var responseText  = document.createTextNode(xhr.responseText);
		responseDiv.appendChild(responseText);
	}
</script>
</head>
<body>
	<h1>Ajax的简单应用(提交表单)</h1>
	<hr><br>
	<form>
		Choose your name:<input type="text" id="userName"/>
		<br>
		<br>
		<input type="reset" value="重置">
		<input type="button" value="提交" id="button1" onclick="javascript:doRequest()">
	</form>
	<br>
	<h2>服务器返回的数据</h2>
	<div id="serverResponse"></div>
</body>
</html>


服务器端代码:
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloAjaxJava1 extends HttpServlet {
	
	protected void processRequest(HttpServletRequest request,HttpServletResponse response,String method)
	throws ServletException,IOException {
		response.setContentType("text/html");
		//获得用户的输入信息
		String userName = request.getParameter("userName");
		//创建回复文本
		String responseText = "userName:"+userName;
		PrintWriter out = response.getWriter();
		out.println(responseText);
		out.close();
	}

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(request, response);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		processRequest(request,response,"POST");
	}
	
}


配置文件web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
         <servlet>
		<servlet-name>hello</servlet-name>
		<servlet-class>HelloAjaxJava1</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/HelloAjaxJava1</url-pattern>
	</servlet-mapping>
</web-app>


分享到:
评论

相关推荐

    AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题

    在使用AJAX技术进行前后端数据交互时,经常会出现中文字符编码的问题,尤其是在使用`XMLHttpRequest`对象发送请求的过程中。例如,在Internet Explorer(IE)浏览器与Mozilla Firefox浏览器之间存在不同的行为表现,...

    用js创建XMLHttpRequest对象池

    3. **处理请求**:使用从对象池中获取的XHR对象发送请求,并在请求完成后归还对象: ```javascript async function sendRequest(url) { const xhr = await getAvailableXHR(); xhr.open('GET', url, true); xhr...

    14_利用XMLHttpRequest接受与处理XML数据.doc

    三、发送请求 使用`send()`方法发送HTTP请求。对于GET请求,直接调用即可;对于POST请求,需要传递数据作为参数。如果处理XML数据,URL通常指向一个XML文件: ```javascript xhr.send(null); // 对于GET请求 xhr....

    不同浏览器创建XMLHttpRequest,兼容各种浏览器(王兴魁老师视频笔记)

    创建了XMLHttpRequest对象后,我们通常会设置其回调函数、打开连接、发送请求。以下是一个基本的请求示例: ```javascript xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === ...

    XMLHttpRequest中文参考手册

    XMLHttpRequest对象通常通过JavaScript创建,并通过`new XMLHttpRequest()`来实例化。一旦创建,我们可以使用它的方法来发起HTTP请求。主要的方法包括: 1. `open()`: 初始化请求。它接受三个参数:请求类型(GET、...

    Asp.net C# Ajax基础 示例代码

    1、创建异步请求XMLHttpRequest对象 2、发送Get请求,请求Xml文件 3、解析请求结果Xml,主要是getElementsByTagName的运用 4、将结果展现到表格,针对表格删行和增行 截图和说明:...

    AJAX的介绍与使用问题详解.docx

    使用XMLHttpRequest对象进行AJAX请求的基本步骤如下: 1. **创建对象**:通过`new XMLHttpRequest()`来创建XMLHttpRequest对象,对于旧版IE,使用`new ActiveXObject("Microsoft.XMLHTTP")`。 2. **建立连接**:...

    JSP XMLHttpRequest动态无刷新及其中文乱码处理.docx

    // 创建XMLHttpRequest对象 var http_request = false; function createRequest(url) { if (window.XMLHttpRequest) { // 支持标准浏览器 http_request = new XMLHttpRequest(); if ...

    异步 提交表单请求

    - **发送请求**:通过XMLHttpRequest对象的open()和send()方法向服务器发送请求。 - **监听状态变化**:通过onreadystatechange事件处理函数,当请求状态改变时执行相应操作。 - **处理响应**:当请求完成且状态...

    简单介绍不用库(框架)自己写ajax

    为了创建一个兼容各浏览器的XMLHttpRequest对象,我们可以使用如下代码: ```javascript var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); ``` 接下来,文章提到...

    AJAX开发简略 (第二部分)

    它负责创建和操作XMLHttpRequest对象,发送请求,以及接收和处理服务器返回的数据。 **C、DOM** DOM(Document Object Model)是一种标准,用于表示HTML或XML文档的结构,并允许程序和脚本动态更新、添加、删除和...

    jquery异步方式请求

    具体步骤如下: 1. **获取表单数据**:首先从DOM元素中获取必要的值,如`pkId`, `code`, `bigArea`, `province`, `city`。 2. **发送GET请求**:使用`$.get()`向`imageList_action.action`发送请求,同时传递上述...

    DWR使用步骤另附ajax使用基本流程

    **DWR的使用步骤如下:** 1. **引入JAR包**:首先,你需要将DWR的JAR包添加到你的项目目录的`WEB-INF/lib`文件夹中。这些JAR文件包含了DWR运行所需的所有类和库。 2. **配置web.xml**:在`web.xml`配置文件中,你...

    ajax笔记01

    #### 二、XMLHttpRequest对象详解 ##### 1. 创建 XMLHttpRequest 对象 由于不同浏览器对于 XMLHttpRequest 的支持有所不同,因此在创建 XMLHttpRequest 对象时需要考虑到浏览器兼容性问题。例如,IE 浏览器需要...

    Ajax技术实现的例子

    实现Ajax的基本步骤如下: 1. 创建XMLHttpRequest对象:对于现代浏览器,可以直接创建新的XMLHttpRequest实例;对于旧版本的IE,可能需要使用ActiveXObject。 2. 打开连接:调用XMLHttpRequest对象的open()方法,...

    使用springmvc整合ajax请求demo代码示例

    在JavaScript中,我们通常使用XMLHttpRequest对象或现代浏览器提供的fetch API来实现Ajax请求。 在Spring MVC中,整合Ajax请求通常涉及以下几个步骤: 1. **创建Controller**:首先,你需要创建一个Spring MVC ...

    XmlHttpselect

    XMLHttpRequest对象的使用步骤大致如下: 1. **创建对象**:首先,需要在JavaScript中创建一个XMLHttpRequest实例,例如`var xhr = new XMLHttpRequest();`。 2. **打开连接**:使用`open()`方法指定请求类型(GET...

    Http post\get 发送表单

    以JavaScript为例,封装一个HTTP POST请求的基本步骤如下: 1. 创建XMLHttpRequest对象。 2. 配置请求,设置请求方法、URL、是否异步以及HTTP头信息。 3. 开始请求,通过`open()`方法指定请求类型、URL和异步模式。...

    js发送手机验证码

    它通过创建XMLHttpRequest对象来实现异步数据请求,使用户可以发送请求到服务器并在后台处理,而无需等待响应完成或重新加载页面。在js发送手机验证码的场景下,AJAX用于向服务器发送请求以获取验证码,并在后台接收...

Global site tag (gtag.js) - Google Analytics