ajax之get、post、send

前端之家收集整理的这篇文章主要介绍了ajax之get、post、send前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这是ajax请求提交页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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">
function loadName(){
	// 创建XMLHttpRequest
	var XMLHttp;
	// 判断浏览器内核是否支持XMLHttpRequest对象
	if (window.XMLHttpRequest) {
		XMLHttp = new XMLHttpRequest;
	}else {
		XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	// 打印状态
	alert("readyState状态:"+XMLHttp.readyState+";status状态:"+XMLHttp.status);
	
	// 当状态发生改变时就会调用onreadystatechange事件,重写onreadystatechange
	XMLHttp.onreadystatechange = function() {
		// 打印状态
		alert("readyState状态:"+XMLHttp.readyState+";status状态:"+XMLHttp.status);
		if(XMLHttp.readyState == 4 && XMLHttp.status == 200) {
			// 获取字符串形式的响应数据
			alert("XMLHttp.responseText:"+XMLHttp.responseText+";XMLHttp.responseXML:"+XMLHttp.responseXML);
			document.getElementById("name").value = XMLHttp.responseText;
		}
	}
	
/* 	// 通过XMLHttp对象请求后台(GET方式)
	// 规定请求的类型、url、是否异步处理
	XMLHttp.open("get","getAjaxName?name=李程&age=11",true);
	// 将请求发送到服务器
	XMLHttp.send(); */
	
/* 	// 通过XMLHttp对象请求后台(POST方式)
	// 规定请求的类型、url、是否异步处理
	XMLHttp.open("post",true);
	// 将请求发送到服务器
	XMLHttp.send(); */
	
 	// 通过XMLHttp对象请求后台(模拟HTML)
	// 规定请求的类型、url、是否异步处理
	XMLHttp.open("post","getAjaxName",true);
	// 设置头信息
	XMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	// 将请求发送到服务器
	XMLHttp.send("name=李程&age=11"); 
}
</script>
</head>
<body>
<div align="center">
<input type="button" onclick="loadName()" value="Ajax获取数据"><input type="text" id="name" value="" />
</div>
</body>
</html>

这是处理ajax请求的servlet
package com.java1234.web;

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 GetAjaxNameServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
		this.doPost(request,response);
	}

	protected void doPost(HttpServletRequest request,IOException {
		// 设置编码
		request.setCharacterEncoding("UTF-8");
		// 接收参数
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		// 输出
		System.out.println("name:"+name+"\nage:"+age);
		
		// 返回内容
		// 设置返回类型
		response.setContentType("text/html;charset=UTF-8");
		// 创建输出流
		PrintWriter out = response.getWriter();
		// 输出
		out.print("ajax返回文本");
		// 刷新
		out.flush();
		// 关闭流
		out.close();
	}

}

1.使用get方式请求后台时出现中文乱码,首先保证页面编码,和请求编码设置为utf-8。然后可以在tomcat的server.xml文件
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" />
这句话后面加URIEncoding="UTF-8",如下
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

2.将参数放到send中传到后台时,要在send之前设置头信息,语句为

XMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
否则后台接收不到参数。我开始在这句话中还设置了编码信息,但是后台接收不到参数值,去掉编码信息就可以接收了。

猜你在找的Ajax相关文章