ajax+Servlet 页面没有返回的结果

热情的菠菜 2012-05-08 03:25:38
servlet 代码:
package com.qt.inquiry;
import com.ht.javabean.DB;
import java.io.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
public class BusServlet extends HttpServlet
{

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
resp.setContentType("text/html;charset=utf-8");
resp.setHeader("Cache-Control", "no-cache");
resp.setHeader("Pragma","no-cache");
resp.setDateHeader("Expires",0);
String busname=req.getParameter("busname");
DB db=new DB();
try
{
String sql="select * from BusLine where BL_Num='"+busname+"'";
ResultSet rs=db.executeQuery(sql);
String info_go=rs.getString("BL_S_Go");
String info_return=rs.getString("BL_S_Return");
StringBuffer buffer=new StringBuffer();
buffer.append("<p>");
buffer.append("<lable>");
buffer.append("上行路线:");
buffer.append("</lable>");
buffer.append(info_go);
buffer.append("</p>");
buffer.append("<p>");
buffer.append("<lable>");
buffer.append("下行路线:");
buffer.append("</lable>");
buffer.append(info_return);
buffer.append("</p>");
PrintWriter out = resp.getWriter();
out.write(buffer.toString());
//out.write(busname);
out.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}

}


web.xml文件:
<servlet>
<servlet-name>BusServlet</servlet-name>
<servlet-class>com.qt.inquiry.BusServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BusServlet</servlet-name>
<url-pattern>/BusServlet</url-pattern>
</servlet-mapping>


index.jsp页面
<form name="BusServlet" method="get"><table>
<tr><td>车次名:</td><td><input type="text" name="busname"/></td></tr>
<tr><td align="center"><input type="button" value="查询" onClick="createXMLHttpRequest('/BusSystem/BusServlet?busname='+document.BusServlet.busname.value);"/></td><td align="center"><input type="reset" value="更改"/></td></tr>
</table></form>

<script type="text/javascript">
function getResult()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
document.getElementById("result").innerHTML=xmlHttp.responseText;
//document.getElementById("result").style.display="block";
}
else
{
alert('您请求的页面有错误'+xmlHttp.status);
}
}
}

function createXMLHttpRequest(url)
{
var URL=url;
//Mozilla 浏览器(将XMLHttpRequest对象作为本地浏览器对象来创建)
if(window.XMLHttpRequest)
{ //Mozilla 浏览器
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{ //IE浏览器
//IE浏览器(将XMLHttpRequest对象作为ActiveX对象来创建)
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{}
}
}
if(!xmlHttp)
{
alert("不能创建XMLHttpRequest对象");
return false;
}
xmlHttp.open("GET",URL,true);
xmlHttp.onreadystatechange=getResult;
xmlHttp.send(null);
}

</script>
...全文
326 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
热情的菠菜 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

哥,你直接用个jquery或者ext
简单多了,当他成功的时候
$.post(getContextPath()+"/formoper/formoper_saveForm.action",jsonObj,function(result){
if(result=='success'){
$.zxDialog.success("保存表单成功!");
……
[/Quote]

这个问题,我已经解决了哈。谢谢你的回答
wxyhaiy 2012-05-11
  • 打赏
  • 举报
回复
哥,你直接用个jquery或者ext
简单多了,当他成功的时候
$.post(getContextPath()+"/formoper/formoper_saveForm.action",jsonObj,function(result){
if(result=='success'){
$.zxDialog.success("保存表单成功!");
}else if(result=="fail"){
$.zxDialog.error("保存表单失败");
}
});
jsonOjb 为json对象
富兰克陈 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
引用 10 楼 的回复:

没看到有公共变量xmlHttp;getResult()方法怎么会知道是哪个变量呢,当没有这个变量时,js会自己new一个xmlHttp的,所以没返回数据



按您的意思是说,xmlHttp应该设置为全局的变量哦?
[/Quote]
是的
热情的菠菜 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

引用 12 楼 的回复:
引用 10 楼 的回复:

没看到有公共变量xmlHttp;getResult()方法怎么会知道是哪个变量呢,当没有这个变量时,js会自己new一个xmlHttp的,所以没返回数据



按您的意思是说,xmlHttp应该设置为全局的变量哦?

是的
[/Quote]

现在能够实现页面局部刷新了,我稍微改了下createxmlHttpRequest这个方法,但是文本框的值无法取到,我只能写个值传过去,能实现我要的结果,现在我就是想通过文本框输入,通过这个值得到我要的结果。我把改动的方法给你看看:
function createXMLHttpRequest(para)
{
var url=para;
if(url=1)
{ //var busname=document.busname.value;
var URL="/BusSystem/BusServlet?Busname="+'1';
}
//Mozilla 浏览器(将XMLHttpRequest对象作为本地浏览器对象来创建)
if(window.XMLHttpRequest)
{ //Mozilla 浏览器
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{ //IE浏览器
//IE浏览器(将XMLHttpRequest对象作为ActiveX对象来创建)
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{}
}
}
if(!xmlHttp)
{
alert("不能创建XMLHttpRequest对象");
return false;
}
xmlHttp.open("GET",URL,true);
xmlHttp.onreadystatechange=getResult;
xmlHttp.send(null);
}

function getResult()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
document.getElementById("result").innerHTML=xmlHttp.responseText;
}
else
{
alert('您查询的内容为空');
}
}


那个busname 我是想去输入框的值 就是用JS代码取不到值。。很疑惑,请帮我分析下,谢谢
热情的菠菜 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

没看到有公共变量xmlHttp;getResult()方法怎么会知道是哪个变量呢,当没有这个变量时,js会自己new一个xmlHttp的,所以没返回数据
[/Quote]


按您的意思是说,xmlHttp应该设置为全局的变量哦?
sgyyz 2012-05-10
  • 打赏
  • 举报
回复
其实你可以直接在地址栏请求一下你的serlvet,然后看他输出的东西是什么。然后你再检查你的js里面的。地址我觉得最好用http://localhost:8080/....这个,保险一些……
富兰克陈 2012-05-10
  • 打赏
  • 举报
回复
没看到有公共变量xmlHttp;getResult()方法怎么会知道是哪个变量呢,当没有这个变量时,js会自己new一个xmlHttp的,所以没返回数据
kijioy 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:

在Servlet把要输出内容打印出来,看有没有提交到Servlet ,前面用Firefox firebug调试,看有没有数据返回



out.write不是打印出来了吗?能否详细说明下吗?万分感谢啊
[/Quote]

一个:你可以在后台往控制台或者日志里输出,你要监视的是请求的内容是否为你要的数据,
二个:再页面把后台返回的数据打印出来,看是否有返回或者返回的数据是否为你想要的,可以使用firebug来调试
热情的菠菜 2012-05-09
  • 打赏
  • 举报
回复
我获取的是数据库里面的内容,通过index页面获取输入的busname值,并通过这个值查询数据库里的相关内容,里面的内容我是想以HTML格式存储起来,再输出来,通过外面的responseText接收,里面不是弄的XML格式的哦。这段代码就是我上面说的意思
kijioy 2012-05-09
  • 打赏
  • 举报
回复
在Servlet把要输出内容打印出来,看有没有提交到Servlet ,前面用Firefox firebug调试,看有没有数据返回
热情的菠菜 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
out.flush 顺边看看你的回调函数是否进入了获取Text的那一步 你在Servlet里面自己弄了个xml格式的 难到外面你用responseText接收 接收过来之后还要进行xml的转换啊 所以你先试试刷刷缓冲区吧
[/Quote]


我感觉我的URL有点问题,我感觉没有进入到那个Servlet进行处理,你看看我那个URL有不有问题,如果有,哪里出错了啊,万分感谢啊。。很急啊
热情的菠菜 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
out.flush 顺边看看你的回调函数是否进入了获取Text的那一步 你在Servlet里面自己弄了个xml格式的 难到外面你用responseText接收 接收过来之后还要进行xml的转换啊 所以你先试试刷刷缓冲区吧
[/Quote]


我感觉我的URL有点问题,我感觉没有进入到那个Servlet进行处理,你看看我那个URL有不有问题,如果有,哪里出错了啊,万分感谢啊。。很急啊
热情的菠菜 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

在Servlet把要输出内容打印出来,看有没有提交到Servlet ,前面用Firefox firebug调试,看有没有数据返回
[/Quote]


out.write不是打印出来了吗?能否详细说明下吗?万分感谢啊
cxw3152 2012-05-08
  • 打赏
  • 举报
回复
out.flush 顺边看看你的回调函数是否进入了获取Text的那一步 你在Servlet里面自己弄了个xml格式的 难到外面你用responseText接收 接收过来之后还要进行xml的转换啊 所以你先试试刷刷缓冲区吧

Mr_Xu_Sea 2012-05-08
  • 打赏
  • 举报
回复
out.flush 顺边看看你的回调函数是否进入了获取Text的那一步 你在Servlet里面自己弄了个xml格式的 难到外面你用responseText接收 接收过来之后还要进行xml的转换啊 所以你先试试刷刷缓冲区吧
Mr_Xu_Sea 2012-05-08
  • 打赏
  • 举报
回复
out.flush 顺边看看你的回调函数是否进入了获取Text的那一步 你在Servlet里面自己弄了个xml格式的 难到外面你用responseText接收 接收过来之后还要进行xml的转换啊 所以你先试试刷刷缓冲区吧

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧