【100分】ajax在jsp页面接受不到数据

wodehongseupan 2011-10-25 12:35:44
大家帮我看看是哪的问题啊 ,我刚接触ajax
-------jsp页面--------
var xmlHttp;
function createXMLHttpRequest()
{
if(window.XMLHttpRequest){
   xmlHttp = new XMLHttpRequest();
  if(xmlHttp.overrideMimeType){
   xmlHttp.overrideMimeType('text/xml');
   }
}else if(window.ActiveXObject){
   try {
   xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");} catch(e){
   try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){

}
   }
}
if (!xmlHttp)
{
   window.alert("不能创建XMLHttpRequest对象实例.");
   return false;
}
}

function getCheckData(name,value){
if(name=="kdid"){
createXMLHttpRequest();
var url="../xtgl/itsDuanMianAction.do?method=returnDuanMianList&kdid="+value;
xmlHttp.open("post", url, false);
xmlHttp.setRequestHeader("Content-Type","text/xml;charset=GB2312") ;
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}
}

function callback(){
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
var sel_area=document.getElementById("sel_dmid");
var info="<select name='dmid' id='sel_dmid' length='50' style='width:140' onclick='getCheckData(this.name);'>";
var xml=xmlHttp.responseXML;
var nodesValue=xml.getElementsByTagName("value");
var nodesKey=xml.getElementsByTagName("key");
var size=nodesValue.length;
alert("---xml----- "+xml);
alert("-------size---- "+size);
if(size>0){
for(i=0;i<size;i++){
info+="<option value="+nodesValue[i].text+">"+nodesKey[i].text+"</option>";
}
}else{
info+="<option value=''>全部</option>";
}
info+="</select>";
sel_area.outerHTML=info;
}
}
}

-------类文件--------
public void returnDuanMianList (ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)throws IOException, ServletException
{
java.util.List list = null;
String kdid="";
ItsDuanmian itsduanmian;
httpServletResponse.setContentType("text/xml; charset=UTF-8");
httpServletResponse.setHeader("Cache-Control", "no-cache");
try
{ PrintWriter out = httpServletResponse.getWriter();
kdid=httpServletRequest.getParameter("kdid");
ItsDuanMianActionForm itsDuanMianActionForm = (ItsDuanMianActionForm)actionForm;
ArrayOfItsDuanmian lstDuanMian = new ArrayOfItsDuanmian();
SRV_itsClient client = new SRV_itsClient();
SRV_itsPortType service = client.getSRV_itsHttpPort();
lstDuanMian = service.getDuanMianList("E",kdid,1,100000);
list=lstDuanMian.getItsDuanmian();
for(int i=0;i<list.size();i++){
itsduanmian=new ItsDuanmian();
itsduanmian=(ItsDuanmian) list.get(i);
out.println("<value>"+itsduanmian.getId()+"</value>");
out.println("<key>"+itsduanmian.getMc().getValue()+"</key>");
}
}
catch(Exception ex)
{
logger.error(ex);
}
}
...全文
199 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracularking 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 wodehongseupan 的回复:]

我在java里的out部分开头和结尾加了out.println(" <response> ");就可以了,不知道为什么
[/Quote]
这应该是某种规范,除却这个可能它接收机制不认。楼主看这:
http://www.zhenhua.org/article.asp?id=477
wodehongseupan 2011-10-26
  • 打赏
  • 举报
回复
我在java里的out部分开头和结尾加了out.println(" <response> ");就可以了,不知道为什么
rorom 2011-10-26
  • 打赏
  • 举报
回复
万年框架的路过
kouyiSC 2011-10-26
  • 打赏
  • 举报
回复
1. 先debug后台,看看你返回的json包是否有需要的数据。。。确保后台java逻辑没问题。。
2. 然后调试前台js,看看ajax返回的状态码是否正确,然后看有没有数据,,看看是否接收数据装换有问题。。
一步步的跟踪很快就能找到原因所在。。。
hu100200 2011-10-26
  • 打赏
  • 举报
回复
是不是方法里的XML值没有返回到页面上呢
wolf863292 2011-10-26
  • 打赏
  • 举报
回复
要么就是用调试模式,自己一步步调。
要么就在java文件中每行加一条System.out.print,然后把后台结果贴出来让我们看。

还有,catch里 加一条 e.printStackTrace(); 看看是不是有异常。
wolf863292 2011-10-26
  • 打赏
  • 举报
回复
要么就是用调试模式,自己一步步调。

要么就在java文件中每行加一条System.out.print,然后把后台结果贴出来让我们看。

还有,catch里 加一条 e.printStackTrace(); 看看是不是有异常。
wasdsheng 2011-10-26
  • 打赏
  • 举报
回复
还是用jquery实现比较ajax比较好 网上很多!
wasdsheng 2011-10-26
  • 打赏
  • 举报
回复
感觉还是用jquery实现比较好!可以在网上搜搜
wodehongseupan 2011-10-26
  • 打赏
  • 举报
回复
大家有知道的吗?很着急啊 !在线等。。
LoongMint 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhangqinhappy 的回复:]
onclick='getCheckData(this.name);'为什么这个是一个参数
getCheckData(name,value)这个是两个参数呢?
难道不是上面调用下面的那个的么?
[/Quote]
楼主 这个getCheckData参数个数不对啊。是一个方法吗?
zhangqinhappy 2011-10-25
  • 打赏
  • 举报
回复
onclick='getCheckData(this.name);'为什么这个是一个参数
getCheckData(name,value)这个是两个参数呢?
难道不是上面调用下面的那个的么?
zhangqinhappy 2011-10-25
  • 打赏
  • 举报
回复
能把JSP页面的也贴出来看看吗?
dragonsky_w 2011-10-25
  • 打赏
  • 举报
回复
我这里有一个Ajax接收数据的小例子,你可以看一看:


// 密码修改
function onEdit(){
var oldpwdVal = $('#oldpwd').val();
var passwordVal = $('#password').val();
var newpwdVal = $('#newpwd').val();
if(oldpwdVal.length < 1){
alert("原始密码输入不能为空");
$('#oldpwd').val('');
} else if(passwordVal.length < 1){
alert("重设密码输入不能为空");
$('#password').val('');
} else if(newpwdVal.length < 1){
alert("确认密码输入不能为空");
$('#newpwd').val('');
} else if(passwordVal != newpwdVal){
alert("两次密码输入不一致");
$('#newpwd').val('');
} else {
$.ajax({
url: "web_verifyPwd.action",
type: "post",
data: "oldpwd="+oldpwdVal,
error: function(){
alert("网络连接错误,请刷新重试!");
},
success: function(result){
if(result == 0){
// table1 = "<img src='../images/webSite/LazyLoad_1.gif' style='padding-left: 30%; padding-top: 25%;'>";
} else {
var dataObj = eval("("+result+")"); //转换为json对象
for(var i = 0; i < 9; i++){
if(dataObj.Table[i].status == 'normal'){
table1 += "<li><a href='allSignInfos.jsp?scid="+ dataObj.Table[i].scid + "'><img src='../images/qmlb_1"+(i+1)+".gif' /></a><span>" + dataObj.Table[i].scname + "</span></li>";
}
}
}
$('#AttributeMsg').html(table1);
}
});
}
}
wodehongseupan 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 huiwenjie168 的回复:]
这样你先把这里的out.println("<value>"+itsduanmian.getId()+"</value>");
out.println("<key>"+itsduanmian.getMc().getValue()+"</key>");改成固定的值,然后看alert弹出的值,如果有其他没有问题,那就是lstDuanMian = service.getDuanMianList("E……
[/Quote]
在java类里,是有值返回的啊
wodehongseupan 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wolf863292 的回复:]
既然知道xml为空了,那就到java里面去调试呗
[/Quote]

JAVA里是有值的
Cactus_hxk 2011-10-25
  • 打赏
  • 举报
回复
这样你先把这里的out.println("<value>"+itsduanmian.getId()+"</value>");
out.println("<key>"+itsduanmian.getMc().getValue()+"</key>");改成固定的值,然后看alert弹出的值,如果有其他没有问题,那就是lstDuanMian = service.getDuanMianList("E",kdid,1,100000); 没有查到值

wolf863292 2011-10-25
  • 打赏
  • 举报
回复
既然知道xml为空了,那就到java里面去调试呗
wodehongseupan 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhangqinhappy 的回复:]
onclick='getCheckData(this.name);'为什么这个是一个参数
getCheckData(name,value)这个是两个参数呢?
难道不是上面调用下面的那个的么?
[/Quote]

方法改成一样的了,也不行
wodehongseupan 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangqinhappy 的回复:]
能把JSP页面的也贴出来看看吗?
[/Quote]

方法改成一样的了,也不行,郁闷。。。。。。
加载更多回复(2)

81,092

社区成员

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

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