js小记

1.关键词:登录功能,session存取

在controller里面可以将数据存入session,jsp中可以取出。

应用:登录成功后,将用户存入session,然后在jsp中可以从session读取出来。

controller中只需在方法中传入一个HttpSession,然后使用该对象setAttribute

js中这样获取:"${sessionScope.username }"


2.400错误:The request sent by the client was syntactically incorrect.

客户端请求语法有错误。controller直接接收不到任何信息。只能通过浏览器F12查看请求的参数,

情况1:当js使用了时间选择器,后台用java.util.Date接收,可能报错。

只要在Controller中添加。

@InitBinder
    public void initbinder(WebDataBinder binder) {
        binder.registerCustomEditor (Date.class, new CustomDateEditor (
                new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"), true));
        // binder.registerCustomEditor(Integer.class, new IntegerEditor());
        // binder.registerCustomEditor(long.class, new LongEditor());
        // binder.registerCustomEditor(double.class, new DoubleEditor());
        // binder.registerCustomEditor(float.class, new FloatEditor());
    }

情况2:请求的参数中,包含值为null的参数。例如:username:null

暂时没有统一的解决办法,根据情况灵活解决。比如在js中判断是否为null,如果是null,则username="";

3.eval函数的使用(从对象中取值)。

例如:

	
function (data) {
		for (o in result) {
                alert("o= "+o+"\ndata[o].id= "+result[o].id+"\ndata[o]= "+JSON.stringify(result[o]));
                }}

data这种数组对象,一般进行遍历时候,期待的结果是"o"是一个阿拉伯数字,是数组中元素的下标,data[o]是数组的元素。 

有时候会发生使用data[o].id这样的取值方法的时候,浏览器F12,consle中会报错,类似找不到data[o]这种属于空指针异常的错误。

打印遍历的结果中,"o"不再是一个数字,而是成为了data对象的一个属性,例如“o=id”.可想而知,data[o]在这种情况相当于data[id]这样的不可能存在的null值,而拿着data[id].id去取值,不报空指针异常才怪。

发生原因:

返回的结果不是对象。浏览器的F12调试,虽然看到返回的结果是json格式,甚至使用typeof函数打印出来的data都是对象类型,可依然抛出异常。最保险的做法是,使用JSON.stringify先把data处理成json字符串,然后使用eval去处理成对象。

所以完整代码应该是。

var result =eval("([" + JSON.stringify(data) + "])");
function (data) {
	for (o in result) {
        alert("o= "+o+"\ndata[o].id= "+result[o].id+"\ndata[o]= "+JSON.stringify(result[o]));
        }}

4.html的元素的src属性赋值问题

var result1="127.0.0.1:8080/a.txt";
var result2="http://127.0.0.1/a.txt";
var elemIF = document.createElement("iframe");
elemIF.src = result1;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
赋值数字开头的result1时,再打印elemIF.src,会在result1前面多一个%3.

但是如果在result1前面添加字母,例如变成result2.则打印正常。

5.jsp文件路径获取(下载例子)

<a href='javascript:void(0);' οnclick='return downloadFile();'>下载</a>

	function downloadFile() {
            try {
                var elemIF = document.createElement("iframe");
                elemIF.src = "${pageContext.request.contextPath}/"+result;
                elemIF.style.display = "none";
                document.body.appendChild(elemIF);
            } catch (e) {
                alert("异常:" + e);
            }}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值