关于 AJAX的问题
我是自己做测试玩玩小例子就出现了下面两个疑问
问题一:乱码问题。
首先在JSP页面设置
<%@ page pageEncoding="utf-8" contentType="text/html;Charset=utf-8"%>
AJAX提交 用的是POST,然后在 send中发送值
var id= document.forms[0].elements("id").value;
var name= document.forms[0].elements("name").value;
var url = "<%=request.getContextPath()%>/ylsuccess.do?actionMethod=getAjax";
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send("id="+id+"&name="+name);
ACTION中取值以及返回值到页面
String id = new String(af.getId().getBytes("ISO8859-1"),"utf-8");
String name = new String(af.getName().getBytes("ISO8859-1"),"utf-8");
System.out.println(id+" "+name);//转码后显示没问题,能显示中文
response.setCharacterEncoding("utf-8");//设置页面返回值的编码方式
PrintWriter out = response.getWriter();
//这是页面响应的方法,值我都显示在textarea中
function updatePage()
{
if(xmlHttp.readystate == 4)
{
var response = xmlHttp.responseText;
document.all.divText.value=response;
}
}
那么下面请看textarea显示的内:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
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();
}
function cell()
{
var id= document.forms[0].elements("id").value;
var name= document.forms[0].elements("name").value;
var url = "/YL/ylsuccess.do?actionMethod=getAjax";
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send("id="+id+"&name="+name);
}
function updatePage()
{
if(xmlHttp.readystate == 4)
{
var response = xmlHttp.responseText;
document.all.divText.value=response;
}
}
function selectAll(object)
{
var page_object = document.forms[0];
if(object.value=="全选")
{
for(var i=0;i<page_object.elements.length;i++)
{
var elementType = page_object.elements[i];
if(elementType.type=="checkbox")
{
elementType.checked=true;
}
}
object.value="全不选";
}
else
{
for(var i=0;i<page_object.elements.length;i++)
{
var elementType = page_object.elements[i];
if(elementType.type=="checkbox")
{
elementType.checked=false;
}
}
object.value="全选";
}
}
function goto()
{
window.location.href=""
}
</script>
</head>
<body>
<form name="AjaxTextForm" method="post" action="/YL/ylsuccess.do">
<input type="button" value="GO!!!" onclick="goto()"/>
<table align="center" border="1" bgcolor="#OBVBBb">
<tr>
<td>选择<input type="checkbox" name="check" value="全选" onClick="selectAll(this);" ></td>
<td>ID:</td>
<td>NAME:</td>
<td>UPDATEID:</td>
<td>UPDATENAME:</td>
</tr>
<tr>
<td><input type="checkbox" name="checknum"></td>
<td><input type="text" name="id" value="ç±ä¸å¯¹æ¹"></td>
<td><input type="text" name="name" value="士大夫" onblur="cell();"></td>
<td><input type="text" name="ids" value=""></td>
<td><input type="text" name="updateNames" value=""></td>
</tr>
</table>
<div id="div" style="color:red" align="center">
<textarea id="divText" rows="10" cols="80"></textarea>
</div>
</form>
</body>
</html>
各位看到没有? 在ID和NAME的value中都出现了乱码,但是“选择”和“全选”这两个不是乱码。这到底是怎么回事?
问题二:我怎么指定xmlHttp.responseText返回的值?为什么返回的是整个JSP页面的代码?如果我想返回ID和NAME的值呢?
那在ACTION中该怎么做?
望大家给点意见