AJAX技术(4)

之前的AJAX技术都是处理服务器响应。

1、可以利用inHTML属性创建动态内容。

2、将响应解析为XML。

3、使用W3C DOM动态编辑页面。

现在利用AJAX技术发送请求参数。

方法一:使用基本的GET和POST方法。

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX应用实例四</title>
<script type="text/javascript">
	var xhr ;
	function createXMLHttpRequest()
	{
		if(window.ActiveXObject)
			{	
			//ie浏览器
				xhr = new ActiveXObject("Microsoft.XMLHttp");
			}
		else if(window.XMLHttpRequest)
			{
			//非ie浏览器
				xhr = new XMLHttpRequest();
			}
	}
	
	//得到用户输入的姓名和生日,将要传送给服务器的数据利用这个函数封装起来
	function createRequestString()
	{
		var firstname = document.getElementById("firstname").value;
		var middlename = document.getElementById("middlename").value;
		var birthday = document.getElementById("birthday").value;
		var requestString = "firstname="+firstname+" &middlename="+middlename+"&birthday="+birthday;
		return requestString;
	}
	
	//get方法
	function doRequstUsingGET()
	{
		createXMLHttpRequest();
		xhr.onreadystatechange = handleResponse;
		//将数据从这里传过去
		xhr.open("GET","getAndPostDemo?"+createRequestString()+"×tamp ="+new Date().getTime(),"true");
		xhr.send(null);
	}
	function doRequestUsingPOST()
	{		
		createXMLHttpRequest();
		xhr.onreadystatechange = handleResponse;
		xhr.open("POST", "getAndPostDemo?timestamp = "+new Date().getTime(), true);
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;")
		xhr.send(createRequestString());
	}
	function handleResponse()
	{	
		if(xhr.readyState==4)
			{
				if(xhr.status == 200)
					{
						var responseDiv = document.getElementById("serverResponse");
						//清楚之前responseDiv中可能有的内容
						if(responseDiv.hasChildNodes())
							{
								responseDiv.removeChild(responseDiv.childNodes[0]);
							}
						var responseText = document.createTextNode(xhr.responseText);
						responseDiv.appendChild(responseText);
					}
			}
	}
</script>
</head>
<body>
<h1>Enter your first name , middle name ,and birthday</h1>
<table>
	<tbody>
	<tr>
		<td>First name:</td>
		<td><input type = 'text' id = 'firstname'/></td>
	</tr>
	<tr>
		<td>Middle name:</td>
		<td><input type = 'text' id = 'middlename'/></td>
	</tr>
	<tr>
		<td>birthday</td>
		<td><input type = 'text' id = 'birthday'></td>
	</tr>
	</tbody>
</table>
<form action = '#'>
	<input type = 'button' value = 'Send parameters using GET' onclick = "doRequstUsingGET();"/>
	<br/>
	<br/>
	<input type = 'button' value = 'Send parameters using POST' onclick = "doRequestUsingPOST();" />
	<br/>
	<h2> Server Response:</h2>
	<div id = "serverResponse" ></div>
</form>
</body>
</html>
2、GetAndPostServlet.java

package servlet;

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 GetAndPostServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String firstName = request.getParameter("firstname");
		String middleName = request.getParameter("middlename");
		String birthday = request.getParameter("birthday");
		System.out.println(birthday);
		response.setContentType("text/xml");
		PrintWriter out = response.getWriter();
		String responseText = "Hello:"+firstName+""+middleName+", your Birthday is "+birthday;
		out.println(responseText);
		out.flush();
		out.close();
	}

	//和get方法的代码基本相同
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String firstName = request.getParameter("firstname");
		String middleName = request.getParameter("middlename");
		String birthday = request.getParameter("birthday");
		response.setContentType("text/xml");
		PrintWriter out = response.getWriter();
		String responseText = "Hello:"+firstName+""+middleName+", your Birthday is "+birthday;
		out.println(responseText);
		out.flush();
		out.close();
	}

}

虽然这个例子很简单。但是还是遇见了很多错误。比如说在向服务器传参数的时候,值一直传不过去。原因是因为取值的时候空格的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值