`

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(); 相对路径

分享到:
评论

相关推荐

    解决JS跨域访问IFrame的解决方案

    综上所述,解决JS跨域访问IFrame的问题,需要根据实际需求和环境选择合适的解决方案,结合服务器端的支持和客户端的技术手段,确保跨域通信的安全和高效。在开发过程中,应充分理解同源策略的限制,熟练掌握跨域通信...

    js算法精度失真问题的解决方案

    ### js算法精度失真问题的解决方案 在JavaScript中进行数学计算时,经常遇到的一个问题是浮点数运算的精度损失问题。这是因为计算机内部采用二进制形式存储数据,而某些十进制小数在二进制中是无法精确表示的,这...

    Javascript跨域和Ajax跨域解决方案

    本文将深入探讨JavaScript和Ajax跨域的原理,以及常用的解决方案。 首先,理解同源策略是解决跨域问题的基础。同源策略是浏览器为了保障用户安全而设定的一种机制,它规定了只有同源(即协议、域名和端口都相同)的...

    Javascript解决方案的问题在LeetCode.zip

    在解压后的文件中,每个JavaScript文件可能对应LeetCode的一个特定问题,通过阅读和学习这些解决方案,你可以加深对上述知识点的理解,提升编程能力和问题解决技巧。同时,不断实践和优化代码,有助于在实际工作中更...

    14 个快速简洁的单行 JavaScript 代码解决方案

    在本文中,我们将研究几种快速简洁的单行解决方案,以解决 JavaScript 中经常出现的各种问题。 什么是单行代码? 在我们开始之前,让我们确保我们了解是什么单行代码。 单行代码是问题的代码解决方案,使用特定编程...

    JSP乱码 N种解决方案

    在开发Java Web应用程序时,JSP(JavaServer Pages)页面经常遇到字符编码...对于复杂的应用场景,可能需要结合多个解决方案一起使用。在日常工作中,养成良好的编码习惯,统一编码标准,可以有效避免乱码问题的发生。

    JS跨域访问解决方案总结.pdf

    标题《JS跨域访问解决方案总结.pdf》指明文档的核心内容是关于JavaScript跨域访问问题的解决方法。跨域访问问题是指由于浏览器的同源策略限制,网页中JavaScript代码出于安全原因不能访问另一个源(域名、协议或端口...

    Node.js-基于VUE2.x和Node.js的完整开源博客解决方案--ZOEBlog

    "Node.js-基于VUE2.x和Node.js的完整开源博客解决方案--ZOEBlog" 这个标题表明我们正在讨论一个开源的博客系统,它使用了Node.js作为服务器端技术,并结合了Vue.js 2.x版本作为前端框架。"ZOEBlog"可能是这个项目的...

    IE 不兼容的几个js问题及解决方法

    ### IE浏览器中的JavaScript不兼容性问题及解决方案 #### 一、Table操作问题 **问题描述:** 在使用JavaScript动态创建`&lt;table&gt;`元素并添加行(`&lt;tr&gt;`)或单元格(`&lt;td&gt;`)时,直接使用`document.createElement()`...

    JQuery跨域访问解决方案

    在Web开发中,由于同源策略的限制,JavaScript通常无法直接访问不同域名下的资源,这就是所谓的跨域问题。然而,为了实现诸如AJAX异步数据交互等需求,开发者需要找到解决这一问题的方法。jQuery作为流行的...

    替代Websocket的解决方案:GoEasy.docx

    GoEasy 是一种替代 WebSocket 的解决方案,主要用于实时通信和数据推送。下面是 GoEasy 的详细介绍: GoEasy 的适用场景: GoEasy 适用于需要实时通信和数据推送的场景,例如监控后台参数等场景。它可以在后台使用...

    在开发AJAX过程中遇到的问题及解决方案

    具体来说,浏览器缓存问题主要体现在以下几个方面: 1. **静态资源缓存**:如JavaScript文件、CSS文件等,浏览器为了提高加载速度,通常会缓存这些资源,但当开发者更新了这些资源后,如果不做处理,用户访问时仍...

    css兼容问题的解决方案

    以上介绍的是几种常见的CSS兼容性问题及其解决方案。通过这些方法,可以有效地解决不同浏览器之间的差异问题,提高网页的兼容性和用户体验。在实际开发中,还需要根据具体的项目需求灵活运用这些技术,以确保页面...

    ASP.NET Web站点高级编程:提出问题-设计方案-解决方案

    ASP.NET Web站点高级编程是一个深度探讨Web应用开发的领域,主要关注如何针对复杂问题提出有效设计方案并实现解决方案。在这个主题中,我们将深入讨论ASP.NET框架的高级特性,以及如何利用这些特性来构建高效、可...

    JS控制div跳转到指定的位置的几种解决方案总结

    本文介绍了几种使用JavaScript实现页面滚动到指定div位置的解决方案。这些方法主要包括锚点法、jQuery的animate方法、window.scrollTo方法和scrollIntoView方法。下面将详细解析每种方法的原理、使用方法及优缺点。 ...

    跨域访问解决方案,关于跨域访问cookie的资料

    为了解决这一问题,并确保在跨域场景下可以正确地处理Cookie信息,本文将详细介绍几种常用的跨域访问解决方案及其在处理Cookie方面的应用。 #### 一、跨域访问解决方案概述 跨域访问是指一个域名下的文档或脚本...

    藏经阁-Fusion Design - 企业级UI解决方案揭秘.pdf

    该解决方案提供了一个设计系统,包括设计语言、视觉风格、前端技术和开发框架等几个方面。 Fusion Design的设计语言是基于品牌元素的,包括颜色、字体、图标、图片等元素。这些元素将被组合成一个统一的设计语言,...

    智慧餐台结算系统解决方案PPT文档.ppt

    该解决方案通常包括以下几个方面: 1. 点餐系统:通过移动终端或自助服务台实现点餐,减少人工错误和排队时间。 2. 订单管理系统:实时跟踪和管理订单状态,确保订单的准确性和及时性。 3. 结算系统:提供多种结算...

    arcgis api for javascript跨域处理方案

    ArcGIS API for JavaScript是一个强大的工具,用于在Web页面上展示地理信息系统(GIS)数据,但它的功能涉及到从服务器获取地图、服务和其他资源,这可能导致跨域访问的问题。为了解决这个问题,我们可以采用几种...

    JS跨域请求解决方案.docx

    针对以上提到的问题,下面将详细介绍几种常用的跨域解决方案: 1. **通过JSONP跨域** JSONP(JSON with Padding)是一种常用的方法来绕过同源策略限制,允许在不同源之间交换数据。该方法利用`&lt;script&gt;`标签的...

Global site tag (gtag.js) - Google Analytics