自己做了一个ajax的小例子!
勉强成功啊!但是还有些问题不知道什么意思啊
希望得到大家的帮助啊!
下文中的注释部分就是我的问题啊!
如果也想跑ajax的也可以参考一下啊
都跑通了
环境是jbX下的tomcat3.3!因为5.xxx有其他项目。
另外直接在servlet 的 sample 路径下跑的不需要设置.xmlStart*****************ajax.jsp*******************************Start
<html>
<head>
<title>
ajax
</title>
</head>
<body bgcolor="#ffffff">
<h1> <input name="username" type="text" maxlength="20" />
<input id="ts" type="button" value="jczh" onclick="testName()" />
<div id="view_name"></div>
</h1>
</body>
</html>
<script language="javascript">
//下面这些是定式吗?
if (window.ActiveXObject && !window.XMLHttpRequest)
{
window.XMLHttpRequest=function()
{
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
};
}
//上面这些是定式吗?
function testName()
{
var view_name=document.getElementById("view_name");
var req=new XMLHttpRequest();
if (req)
{
alert("req=="+req);
//这是什么意思啊?
req.onreadystatechange=function()
{
//req.readyState、req.status是什么啊?为什么是4和200呢?
if (req.readyState==4 && req.status==200)
{
alert("responseText="+req.responseText);
if(req.responseText==0)
{
view_name.style.color='green';
view_name.innerHTML='zcsy?';
}
else if(req.responseText==1)
{
view_name.style.color='red';
view_name.innerHTML='ybsy!';
}
else
{
view_name.style.color='red';
view_name.innerHTML='ffzf*';
}
}
}
//如果数据量大的话怎!接收啊servletAjax传过来的xml数据啊?
req.open('POST', '../servlet/servletAjax');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send("");
}
}
</script> End*****************ajax.jsp*******************************End
Start*****************servletAjax.java*******************************Startimport javax.servlet.http.HttpServlet;
import javax.servlet.*;
import java.io.*;public class servletAjax
extends HttpServlet {
public void service(ServletRequest request, ServletResponse response) throws
IOException {
//ajax.jsp Post过来的数据为什么我一个都收不到呢?
String strName = request.getParameter("username");
System.out.println("strName==" + strName + "."); String strViewName = request.getParameter("view_name");
System.out.println("strViewName==" + strViewName + "."); String strTs = request.getParameter("ts");
System.out.println("strTs==" + strTs + "."); BufferedReader sis = new BufferedReader(new InputStreamReader(request.
getInputStream()));
String strLine = sis.readLine();
System.out.println("Length......." + request.getContentLength() + ".");
String sum = ".";
while (strLine != null) {
sum += sis.readLine();
}
System.out.println(sum);
//如果数据量大的话怎么用xml发送和接收啊?
response.getOutputStream().print(2);
}
}End*****************servletAjax.java*******************************End
勉强成功啊!但是还有些问题不知道什么意思啊
希望得到大家的帮助啊!
下文中的注释部分就是我的问题啊!
如果也想跑ajax的也可以参考一下啊
都跑通了
环境是jbX下的tomcat3.3!因为5.xxx有其他项目。
另外直接在servlet 的 sample 路径下跑的不需要设置.xmlStart*****************ajax.jsp*******************************Start
<html>
<head>
<title>
ajax
</title>
</head>
<body bgcolor="#ffffff">
<h1> <input name="username" type="text" maxlength="20" />
<input id="ts" type="button" value="jczh" onclick="testName()" />
<div id="view_name"></div>
</h1>
</body>
</html>
<script language="javascript">
//下面这些是定式吗?
if (window.ActiveXObject && !window.XMLHttpRequest)
{
window.XMLHttpRequest=function()
{
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
};
}
//上面这些是定式吗?
function testName()
{
var view_name=document.getElementById("view_name");
var req=new XMLHttpRequest();
if (req)
{
alert("req=="+req);
//这是什么意思啊?
req.onreadystatechange=function()
{
//req.readyState、req.status是什么啊?为什么是4和200呢?
if (req.readyState==4 && req.status==200)
{
alert("responseText="+req.responseText);
if(req.responseText==0)
{
view_name.style.color='green';
view_name.innerHTML='zcsy?';
}
else if(req.responseText==1)
{
view_name.style.color='red';
view_name.innerHTML='ybsy!';
}
else
{
view_name.style.color='red';
view_name.innerHTML='ffzf*';
}
}
}
//如果数据量大的话怎!接收啊servletAjax传过来的xml数据啊?
req.open('POST', '../servlet/servletAjax');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send("");
}
}
</script> End*****************ajax.jsp*******************************End
Start*****************servletAjax.java*******************************Startimport javax.servlet.http.HttpServlet;
import javax.servlet.*;
import java.io.*;public class servletAjax
extends HttpServlet {
public void service(ServletRequest request, ServletResponse response) throws
IOException {
//ajax.jsp Post过来的数据为什么我一个都收不到呢?
String strName = request.getParameter("username");
System.out.println("strName==" + strName + "."); String strViewName = request.getParameter("view_name");
System.out.println("strViewName==" + strViewName + "."); String strTs = request.getParameter("ts");
System.out.println("strTs==" + strTs + "."); BufferedReader sis = new BufferedReader(new InputStreamReader(request.
getInputStream()));
String strLine = sis.readLine();
System.out.println("Length......." + request.getContentLength() + ".");
String sum = ".";
while (strLine != null) {
sum += sis.readLine();
}
System.out.println(sum);
//如果数据量大的话怎么用xml发送和接收啊?
response.getOutputStream().print(2);
}
}End*****************servletAjax.java*******************************End
2.alert()相当于system.out.println();
3.req.readyState、req.status是什么啊?为什么是4和200呢?如果是4和200表示连接上了服务端
String strName = request.getParameter("username");
System.out.println("strName==" + strName + "."); String strViewName = request.getParameter("view_name");
System.out.println("strViewName==" + strViewName + "."); String strTs = request.getParameter("ts");
System.out.println("strTs==" + strTs + ".");//如果数据量大的话怎!接收啊servletAjax传过来的xml数据啊?
req.open('POST', '../servlet/servletAjax');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send("");
}
2、alert是警告框,就是谈出一个警告,一般用在告警或者测试用
3、这些数字请直接搜索readyState、status,这些都是http协议里面定义的东西。记录了当前交互中的种种状态
4、你用post的时候,需要在send里面加上你的传递数据。实际上他们都是走GET的方式来的,所以应该要写
o.send("a=b&c=d");
5、一般来的数据都是可以处理的,如果数据库量比较大的话,那我也不太清楚,也没有去考虑过。
alert警告框.
post过来的,你要写在httpservlet的post函数里写request.getParameter.
大数据量都是用xml传数据的,你也可以用json
{
window.XMLHttpRequest=function()
{
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
};
}
这里确实可以说是固定写法,作用是获得该对象,其实有另一种不同的写法,但是功能是一样的req.onreadystatechange=function() 这个是指定返回的信息用哪个方法处理 if (req.readyState==4 && req.status==200)表示该页面存在String strName = request.getParameter("username");
这里可能四因为确实没有提高过数据来的原因,检查下那个输入框是否是叫username其他的我就不知道了
2.req.onreadystatechange=function()
onreadystatechange是一个方法,当其状态改变时,就会调用你自己的函数。这个方法名称是固定这样写的。
3.你说的4,200都是一些状态值,这些你可以查看一些ajax的基础资料,里面一般都会说。
4.ajax一般使用xml来传递数据,在后台将数据封装成xml,然后在前台用js来解析这些xml来获取数据。你虽然运行了示例,但还是不了解ajax,建议lz多多了解ajax的运行原理,这样才能用好ajax。