JS的几个问题和解决方案

防止浏览器后退操作,使用window.locaiton.replace()方法,

------------------------------------------------------------------

Ajax静态页面局部刷新:

 

3种方式:

1:div中嵌套一个iframe,当点击a标签时,将a标签的href赋值给ifame的src:

$('a').click(function(){

     $('iframeId').attr('src',$(this).attr('href'));

})

 

2:用ajax获取数据集,将值写到div中:

$('a').click(function(){

    $.post(url,null,function(data){

        // $('myDIV').html(data);//data为字符串

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

                 $('myDIV').html(data[i].name);//data为json值

        }

    })

}) 

 

3:用jquery 的load方法:

$('a').click(function(){     

        $("myDIV").load($(this).attr('href'));

})

------------------------------------------------------------------------

 

判断页面是动态还是静态的方法:

 

ie直接输入:javascript:alert(document.lastModified)

 

谷歌:F12-->console:javascript:alert(document.lastModified)

-----------------------------------------------------------------------------------------------

jquery隐藏一个tr:

$("#tr_pwd").hide(); //使用方式一,如果使用了彪子的js校验,则校验不起效果,徐改为下面的方式

$("#tr_pwd").remove(); //虽然是remove,但是查看源代码任然存在,可能在内存中的dom模型中是被移除掉了,使用该方法,彪子的js校验仍然有效果

 

 

关联代码如下:

<tr id="tr_pwd">

<td  class="term_left"><label for="password">密&nbsp;&nbsp;码:</label></td>

<td><input id="password" type="password" name="password" value=""  class="input_nonull" style="width:127px" /></td>

<td  class="term_left"><label for="repassword">确认密码:</label></td>

<td><input id="repassword" type="password" name="repassword" value=""  class="input_nonull" style="width:127px" /></td>

</tr>

 

--------------------------------------------------------------------------------------------------------------------

防止页面刷新时弹出“重试”对话框的最便捷方法:

window.location.href=window.location.href;

------------------------------------------------------------------------------------------------------------------

encodeURIComponent()解决乱码的方法:

 

var url = "<%=basePath %>manage/user/delete.do?userId="+encodeURIComponent(userId);

$.get(url,function(data){

if(data=="success"){

//alert("删除成功!");

document.location.reload();

}else{

alert("删除失败!");

}

});

-----------------------------------------------------------------------------------------------

假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp

 

System.out.println(request.getContextPath()); 打印结果:/news 

 

System.out.println(request.getServletPath()); 打印结果:/main/list.jsp 

 

System.out.println(request.getRequestURI()); 打印结果:/news/main/list.jsp 

 

System.out.println(request.getRealPath("/")); 打印结果:F:/Tomcat 6.0/webapps/news/test

 

-------------------------------------------------------------------------------------------

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

 

meta标签中content属性中的charset值决定了浏览器打开页面时用哪种方式来解析,

如果是utf-8,打开时浏览器会用utf-8字符集来解析

如果是iso-8859-1,打开时浏览器会用iso字符集来解析

如果是gbk,gbk2312,打开时浏览器会用gbk2312简体中文字符集来解析(GBK>GB2312)

如果是big5,打开时浏览器会用繁体中文字符集来解析

---------------------------------------------------------------------------------------------------------------------------

$.ajax({

async: false,

url: "validateAtmAction!validateAtm.action",

data:"",

success: function(msg){

    alert( "您的ip地址: " + msg+"不是合法的终端ip!" );

},

error:function(XMLHttpRequest, textStatus, errorThrown){alert("请求失败");alert(textStatus);alert(errorThrown);}

});

 

jquery中ajax调用action的时候,方法默认返回text/html格式文档,不能按照struts2中action的方式返回字符串结果,

因此aciton中处理的方法返回结果应当是void,在方法体内直接以response方式返回文档内容(前提是返回内容dataType是html或者xml),

不然success方法中不执行,总走error方法。

 

-----------------------------------------------------------------------------------------------------------------------------

js:double类型保存小数点后两位(toFixed()方法)

 

var sNum = "12.5557";

    nNum = parseFloat(sNum);

if(!isNaN(nNum)) {

    alert(nNum.toFixed(2));

}

 

 

 

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

 

语法

NumberObject.toFixed(num)

 

参数描述

num必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

 

返回值

返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。

 

抛出

 

当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。

当调用该方法的对象不是 Number 时抛出 TypeError 异常。

实例

 

在本例中,我们将把数字舍入为仅有一位小数的数字:

 

<script type="text/javascript">

var num = new Number(13.37);

document.write (num.toFixed(1))

</script>

 

输出:

 

13.4

 --------------------------------------------------------------------------------------------------------

 

状态栏显示停留多长时间:

 

第一步:把如下代码加入到<head>区域中-->

 

<script>

 

    var Temp;

    var TimerId = null;

    var TimerRunning = false;

 

    Seconds = 0

    Minutes = 0

    Hours = 0

 

    function showtime(){

      if(Seconds >= 59){

        Seconds = 0

        if(Minutes >= 59){

          Minutes = 0

          if(Hours >= 23){

            Seconds = 0

            Minutes = 0

            Hours = 0

          } 

          else { 

            ++Hours 

          }

        } 

        else { 

          ++Minutes 

        }

      } 

      else { 

        ++Seconds 

      }

 

      if(Seconds != 1) { var ss="s" } else { var ss="" }

      if(Minutes != 1) { var ms="s" } else { var ms="" }

      if(Hours != 1) { var hs="s" } else { var hs="" }

 

      Temp = '你在本页停留了 '+Hours+' 小时'+', '+Minutes+' 分'+', '+Seconds+' 秒'+''

      window.status = Temp;

      TimerId = setTimeout("showtime()", 1000);

      TimerRunning = true;

    }

  

    var TimerId = null;

    var TimerRunning = false;

 

    function stopClock() {

      if(TimerRunning) 

        clearTimeout(TimerId);

        TimerRunning = false;

    }

 

    function startClock() {

      stopClock();

      showtime();

    }

 

    function stat(txt) {

      window.status = txt;

      setTimeout("erase()", 2000);

    }

 

    function erase() {

      window.status = "";

    }

 

</SCRIPT>

 

 

<!--第二步:把“onLoad="startClock()"”加在<body>标记里

例如:-->

<body onLoad="startClock()">

 

这个只在ie下有效果

---------------------------------------------------------------------------------------------------------------------------------

getRealPath("/")过时,对应的替代方法:

 

request.getSession().getServletContect().getRealPath("/")得到站点的绝对地址

 

 

 

在Servlet 和Struts中还可以用

 

this.getServletContect().getRealPath("/");//这个有可能拿到null

 

this.getServlet().getServletContect().getRealPath("/");//这个没试过

 

ServletActionContext.getServletContext().getRealPath("comm");

 

 

一般情况下使用this.getServlet().getServletContext().getRealPath()和request.getSession().getServletContext().getRealPath()是一样的效果,但是当我们部署的一个EAR包里面有多个WAR应用包共享会话时,request.getSession().getServletContext().getRealPath()这个可能取不到你想要的这个应用的绝对路径,而取到的是其他应用的绝对路径,所以,最好还是使用this.getServlet().getServletContext().getRealPath()来获取绝对路径,避免在这种多应用会话共享情况下绝对路径的错乱。

 

 

//下面为struts2里面的方案

ActionContext ac = ActionContext.getContext();   

ServletContext sc = (ServletContext) ac.get(ServletActionContext.SERVLET_CONTEXT);   

String path = sc.getRealPath("/");  

request.getContextPath().toString(); 相对路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值