首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

【100分】ajax在jsp页面接受不到数据解决方法

2012-03-19 
【100分】ajax在jsp页面接受不到数据大家帮我看看是哪的问题啊 ,我刚接触ajax-------jsp页面--------var xml

【100分】ajax在jsp页面接受不到数据
大家帮我看看是哪的问题啊 ,我刚接触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);
}
}

[解决办法]
能把JSP页面的也贴出来看看吗?
[解决办法]
onclick='getCheckData(this.name);'为什么这个是一个参数
getCheckData(name,value)这个是两个参数呢?
难道不是上面调用下面的那个的么?
[解决办法]

探讨
onclick='getCheckData(this.name);'为什么这个是一个参数
getCheckData(name,value)这个是两个参数呢?
难道不是上面调用下面的那个的么?

[解决办法]
Ajax的post传参方式好像不是你那样把
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);
}
}
JScript code
function getCheckData(name,value){  if(name=="kdid"){   createXMLHttpRequest();var url="../xtgl/itsDuanMianAction.do?method=returnDuanMianList;xmlHttp.open("post", url, true); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded") ;xmlHttp.onreadystatechange = callback;xmlHttp.send("kdid="+Value);     }   }
[解决办法]
这样你先把这里的out.println("<value>"+itsduanmian.getId()+"</value>");
out.println("<key>"+itsduanmian.getMc().getValue()+"</key>");改成固定的值,然后看alert弹出的值,如果有其他没有问题,那就是lstDuanMian = service.getDuanMianList("E",kdid,1,100000); 没有查到值


[解决办法]
要么就是用调试模式,自己一步步调。
要么就在java文件中每行加一条System.out.print,然后把后台结果贴出来让我们看。

还有,catch里 加一条 e.printStackTrace(); 看看是不是有异常。

热点排行