随记整理--在自学web遇到的问题

自己自学web,遇到很多问题,也谷歌百度了很多,现在就记录一下最近遇到的问题 简单介绍遇到的问题和解决方法:

1.Uncaught TypeError: Cannot call method 'getElementsByTagName' of nullajax

提交给servlet的时候需要把响应的HTTP内容类型设置为text/xml并且把Cache-Control头部设置为no-cache,设置Cache-Control头部可以阻止浏览器简单的从缓存中重载页面。

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { 

response.setContentType("text/xml;charset=utf-8"); 

response.setHeader("Cache-Control", "no-cache"); 

PrintWriter out = response.getWriter(); 

for(String usrname:userList){

out.println("<username>"+usrname+"</username>");

}

}

这样客户端就可以通过下面的方式获取标签里面的内容了

var msg = XMLHttp.responseXML;

var xmlname=msg.getElementsByTagName("username");

for(var i = 0; i < xmlname.length; i++){

var usrname=msg.getElementsByTagName('username')[i].firstChild.nodeValue;

}

2.ajax参数中文乱码问题假如传递的参数是sdeptid,对sdeptid进行两次转码

sdeptid=encodeURI(sdeptid);

sdeptid=encodeURI(sdeptid);

var url="xxxxx?sdeptid="+sdeptid;

XMLHttp.open("GET", url, true);

XMLHttp.send(null);

然后在servlet中解码

String sdeptid=request.getParameter("sdeptid");

sdeptid=URLDecoder.decode(sdeptid,"utf8");

注意response.setContentType("text/xml;charset=utf-8");和PrintWriter out = response.getWriter();的位置关系,切记要将PrintWriter out = response.getWriter();放在response.setContentType("text/html;charset=utf-8");的后面,不然ajax从服务器获取数据会也出现乱码。

3.弹出的子窗体向原来的窗体传值问题

方法一用opener

原来窗体的js代码

window.showModalDialog("xxxx.jsp",window,"status:no;scroll:no;dialogWidth:500px;dialogHeight:300px");

弹出的窗体js代码

window.opener.document.getElementById("原来窗体中的控件的id").value = document.getElemnetById("弹出窗体的控件的id").value ; 

但是框架的 Window 对象的 operner 属性无效

方法二通过返回值原来窗体的js代码

var str=window.showModalDialog("xxxx.jsp",window,"status:no;scroll:no;dialogWidth:500px;dialogHeight:300px");

弹出的窗体的js代码

window.returnValue=document.getElementById("xxx").value;window.close();

记录以备不忘

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值