Ajac问题

「已注销」 2009-03-10 05:48:03
我 现搞个二级联动菜单
JS 代码如下
var XMLRequest=null;
function createXMLRequest() {
if (window.ActiveXObject) {
XMLRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
XMLRequest = new XMLHttpRequest();
}
}
}
function ctype(id) {
var typename1 = document.getElementById("classId").value;
var product = document.getElementById("nclassId");
product.length = 1;
if (-1 != typename1) {
XMLRequest = this.createXMLRequest();
//createXMLRequest();
alert(XMLRequest + "dfgdgdfgdsssssssss");
var url = "/admin/news/viceasy.do?method=showtwonavi&classId=" + escape(typename1);
XMLRequest.open("post", url, true);
XMLRequest.onreadystatechange = function () {
if (XMLRequest.readyState == 4) {
if (XMLRequest.status == 200) {
var nclassidnameStr = XMLRequest.responseText;
alert(nclassidnameStr);
this.pro(nclassidnameStr);
} else {
if (XMLRequest.status == 404) {
}
}
}
};
XMLRequest.send(null);
}
}
function pro(nclassidnameStr) {
var len = new Array();
len = nclassidnameStr.split("/");
var product = document.getElementById("nclassId");
for (var aa = 0; aa < len.length - 1; aa++) {
var oYoption = document.createElement("option");
oYoption.setAttribute("nclassId", len[aa].substr(0, len[aa].indexOf("+")));
oYoption.appendChild(document.createTextNode(len[aa].substr(len[aa].lastIndexOf("+") + 1)));
oYoption.setAttribute("value", len[aa].substr(0, len[aa].indexOf("+")));
product.appendChild(oYoption);
}
}

Java 对应的Action 为
Long ClassID = Long.valueOf(request.getParameter("classId"));
System.out.println("dfsgsfffffffff" + ClassID);
List <NewsNclass> newsNclasslist = newsNclassdaoserver
.listNewsNClassbyclassID(ClassID);
String nclassidname = null;
try {
long nclassid;
String classname = null;
for (int index = 0; index < newsNclasslist.size(); index++) {
newsdataForm = (NewsNclass) newsNclasslist.get(index);
nclassid=newsdataForm.getNclassID();
classname = newsdataForm.getNclassName();
nclassidname += nclassid + "+" + classname + "/";
}
nclassidname = nclassidname.substring(0, nclassidname.lastIndexOf("/"));
response.setContentType("text/xml;charset=gbk");
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter ps = response.getWriter();
ps.print(nclassidname);
ps.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
JSP页面为 <td>
<select name="classId" id="classId"
onChange="ctype(document.myform.classId.options [document.myform.classId.selectedIndex].value)"
ize="1">
<c:forEach items="${newsclasslist}" var="n">
<option value="${n.classId}">
${n.className}
</option>
</c:forEach>
</select>
<select name="nclassId" id="nclassId">
<option value="-1">
Child Not Selected!
</option>
</select>
<font color="#ff6600">** </font>
</td>
请问 javaScript 中报 XMLRequest undefined 请帮忙解决下
先谢谢了
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mumu_java 2009-03-12
  • 打赏
  • 举报
回复

function createXMLDOM(){
var arrSignatures = ["MSXML2.0DOMDocument.5.0","MSXML2.0DOMDocument.4.0","MSXML2.0DOMDocument.3.0",
"MSXML2.0DOMDocument","Microsoft.XmlDom"];
for (var i=0;i<arrSignatures.length;i++){
try{
var oXmlDom = new ActiveXObject(arrSignatures[i]);
return oXmlDom;
} catch (oError){
//ignore
}//end try catch
}//end for
throw new Error("MSXML is not installed on your system!");
}

lz将createXMLRequest()函数换成上边的写发,并且在调用的时候XMLRequest = this.createXMLRequest();把this关键字去掉试试,应该可以.
「已注销」 2009-03-12
  • 打赏
  • 举报
回复
tanks 我现在一级解决了 就是你说的这个问题
「已注销」 2009-03-10
  • 打赏
  • 举报
回复
我在 掉有Action 前就
XMLRequest = this.createXMLRequest();
//createXMLRequest();
alert(XMLRequest + "dfgdgdfgdsssssssss");

显示 XMLRequest 这个对象 报 XMLRequest undefined
应该与Action 没关系 应该是JAVAScript 问题

我是个JS菜鸟 帮忙解决 JAVAScript 就可以
街头小贩 2009-03-10
  • 打赏
  • 举报
回复
action输出有值么?

52,782

社区成员

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

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