如何处理异步请求后的返回结果?

SIMONJZF 2010-07-30 08:25:29
这个问题难吗?搞了很久,晕了,请各位帮帮忙!

前台页面:

查询网页:<input id="proxyReqUrl" type="text" name=proxyReqUrl size="40" >
查询内容:<input id="keyword" type="text" name="keyword" size="40">
<input type="submit" value="确定" onclick="getData();" >

<div id="show">
<!-- 期望在这里显示返回结果 -->
</div>


前台script部分:

<script type="text/javascript">
var xmlHttpRequest;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttpRequest = new XMLHttpRequest();
}
}

function getData(){
var webadd = document.getElementById("proxyReqUrl").value;
var key = document.getElementById("keyword").value;
var u = encodeURI("servlet/AjaxProxyServlet?proxyReqUrl="+webadd+"&keyword="+key);

createXMLHttpRequest();
xmlHttpRequest.onreadystatechange=call;
xmlHttpRequest.open("GET",u,true);
xmlHttpRequest.send(null);
}

function call(){
var xrs = xmlHttpRequest.readyState;
if(xrs==4){
var xs = xmlHttpRequest.status;
if(xs==200){
var rs=xmlHttpRequest.requestText;//这里得不到返回的结果?

}
}
}
</script>



后台通过一个servlet 来获取查询结果(该servlet 其实就是一个代理,因为JS存在跨域问题)



.......
//这里的result 做怎么处理,才能返回给前台加以显示
String result = resp.getContent();
......
...全文
851 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlss_17 2010-07-31
  • 打赏
  • 举报
回复
8楼
+1
kyzy_yy_pm 2010-07-31
  • 打赏
  • 举报
回复
好好看看吧楼主

function callback(){//回调函数
if (request.readyState == 4){
if (request.status == 200){
alert(request.responseText);
}else if(request.status == 404){
alert("该路径未找到");
}else if(request.status == 403){
alert("禁止访问");
}else{
alert("status is " + request.status);
}
}
}
hoojo 2010-07-31
  • 打赏
  • 举报
回复
一闪而过,没有吧。可能是你的代码有问题……
hoojo 2010-07-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 simonjzf 的回复:]

归纳下,有两个问题:
1.如何在servlet 中处理返回的String ,才能在前台通过 xmlHttpRequest.responseText 得到该结果?

2.我尝试将这样写: doucment.getElementById("show").innerHTML="hello!" ,结果是:hello 在页面中一闪而过?

劳驾各位,给仔细看看,高分相送!!!
[/Quote]


servlet中要用流输出
PrintWriter out = response.getWriter();
//这里的result 做怎么处理,才能返回给前台加以显示
String result = resp.getContent();
out.print(result);//不要用println,ln是换行
out.flush();
out.close();


alert(xmlHttpRequest.responseText);这个就后台out.print的值
zoujp_xyz 2010-07-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 licip 的回复:]

var rs=xmlHttpRequest.requestText;//这里得不到返回的结果?
这个地方写错了。应该是:
responseText这样才对。
[/Quote]
确实。。。
licip 2010-07-31
  • 打赏
  • 举报
回复
var rs=xmlHttpRequest.requestText;//这里得不到返回的结果?
这个地方写错了。应该是:
responseText这样才对。
SIMONJZF 2010-07-30
  • 打赏
  • 举报
回复
归纳下,有两个问题:
1.如何在servlet 中处理返回的String ,才能在前台通过 xmlHttpRequest.responseText 得到该结果?

2.我尝试将这样写: doucment.getElementById("show").innerHTML="hello!" ,结果是:hello 在页面中一闪而过?

劳驾各位,给仔细看看,高分相送!!!
SIMONJZF 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 simonjzf 的回复:]
引用 2 楼 zoujp_xyz 的回复:
JScript code

function call(){
var xrs = xmlHttpRequest.readyState;
if(xrs==4){
var xs = xmlHttpRequest.status;
if(xs==200){
var rs=xmlHttpRequest.reques……


后台调试过了,能在……
[/Quote]

补充下,前台alert(rs) 弹出的是 undefined
SIMONJZF 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zoujp_xyz 的回复:]
JScript code

function call(){
var xrs = xmlHttpRequest.readyState;
if(xrs==4){
var xs = xmlHttpRequest.status;
if(xs==200){
var rs=xmlHttpRequest.reques……
[/Quote]

后台调试过了,能在后台打印处理结果,只是不知道如何让前台得到?
zoujp_xyz 2010-07-30
  • 打赏
  • 举报
回复

function call(){
var xrs = xmlHttpRequest.readyState;
if(xrs==4){
var xs = xmlHttpRequest.status;
if(xs==200){
var rs=xmlHttpRequest.requestText;//这里得不到返回的结果?
alert(rs)//如果rs返回的是空值,那么肯定是后台处理出错了,调试一下后台看看
如果返回正确了就这样处理
doucment.getElementById("show").innerHTML=rs;
}
}
}

SIMONJZF 2010-07-30
  • 打赏
  • 举报
回复
先去吃个饭,回来请您喝水!

52,797

社区成员

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

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