js部分代码

本文详细介绍了两种异步交互方法,包括基于jQuery的AJAX提交和自定义的AJAX提交逻辑,同时讨论了如何确保数据安全和用户体验,通过编码和解码URL参数来防止恶意注入,并提供了网页禁止右键菜单显示、禁止复制粘贴剪切代码的实现方法。此外,还展示了获取客户端IP地址的多种方式,以及如何设置HTTP响应的属性以返回HTML或XML格式的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两种异步交互的方法
var options = {
type: 'POST',
async: false,
dataType: 'content-type',
success: function(responseText) {
flag = ""+responseText;
}
}


$.post("<%=request.getContextPath()%>/sysorganizations.action?m=check&deptid="+deptid,
function(data){
if (data == 'false') {
alert("一天之内只可进行一次修改.");
return false;
}else{
//提交form基本信息
$('#myform').ajaxSubmit(options);
}
})

function submitMyForm1(){


var flag = "failure!";
var options = {
type: 'POST',
async: false,
dataType: 'content-type',
success: function(responseText) {
if(""==responseText||responseText.indexOf("success")!=-1){
//ymPrompt.succeedInfo({title:"提示",message:"保存成功"});
ymPrompt.succeedInfo({title:"提示",message:"全部保存成功",handler:function (){document.location.reload();}});
}else if(responseText.indexOf("ERROR1")!=-1){
ymPrompt.succeedInfo({title:"提示",message:"保存失败,无法正确获得文件",handler:function (){document.location.reload();}});
}else if(responseText.indexOf("ERROR2")!=-1){
ymPrompt.succeedInfo({title:"提示",message:"保存失败,文件类型不匹配,必须是2003版Excel,后缀名为xls",handler:function (){document.location.reload();}});
}else if(responseText.indexOf("ERROR3")!=-1){
ymPrompt.succeedInfo({title:"提示",message:"保存失败,无法解析Excel文件",handler:function (){document.location.reload();}});
}else if(responseText.indexOf("ERROR4")!=-1){
ymPrompt.succeedInfo({title:"提示",message:"保存失败,Excel文件内容为空,",handler:function (){document.location.reload();}});
}
else{
//ymPrompt.succeedInfo({title:"提示",message:"保存失败"});
var suc_count=responseText.substring(responseText.indexOf("SUC_COUNT")+9,responseText.indexOf("SUC_COUNT")+14)
var fai_count=responseText.substring(responseText.indexOf("FAI_COUNT")+9,responseText.indexOf("FAI_COUNT")+14)
ymPrompt.succeedInfo({title:"提示",message:suc_count+"条数据保存成功<br/>"+fai_count+"条数据保存失败",handler:function (){document.location.reload();}});
}

}
}
//提交form
$('#form2').ajaxSubmit(options);
}



JS这个方法可以保证在网页get方法提交时在url后缀添加的要提交到后台的参数 不被恶意注入 
提前在前台进行 编码  后台进行解码  
encodeURIComponent() 
与encodeURI()不同的地方在于他连标点符号也会进行转义
后台
java.net.URLEncoder.encode()进行相应的解码




网页禁止右键菜单显示
jQuery(document).ready(function(){
jQuery(document).bind("contextmenu",function(e){
return false;
});
});


网页禁止复制粘贴 剪切 代码
<script type="text/javascript">
jQuery(document).ready(function()
{
jQuery(document).bind("cut copy paste",function(e) {
 e.preventDefault();
});
});
</script>

获取客户端的IP地址
   public static String getRemoteAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
第二种方法:
String ip = null;
Enumeration enu = request.getHeaderNames();
while (enu.hasMoreElements()) {
String name = (String) enu.nextElement();
if (name.equalsIgnoreCase("X-Forwarded-For")) {
ip = request.getHeader(name);
} else if (name.equalsIgnoreCase("Proxy-Client-IP")) {
ip = request.getHeader(name);
} else if (name.equalsIgnoreCase("WL-Proxy-Client-IP")) {
ip = request.getHeader(name);
}
if ((ip != null) && (ip.length() != 0)) {
break;
}
}
if ((ip == null) || (ip.length() == 0)) {
ip = request.getRemoteAddr();
}
return ip;
}
工具类 设置 response 的属性 返回 html 或者xml
public static HttpServletResponse setCommonHtmlResponse(HttpServletResponse response) {
response.setContentType("text/html; charset=UTF-8");   //这里可以改成 text/xml 以设置返回为xml
response.setCharacterEncoding("UTF-8");
response.setHeader("Pragma", "No-cache");// HTTP 1.1
response.setHeader("Cache-Control", "no-cache");// HTTP 1.0
response.setHeader("Expires", "0");
return response;
}
获取距离今年,近N年的年份
public static List getNearlyFiveYears(int N) {
String currentYear = "";
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy");   //设置格式
Calendar cd = Calendar.getInstance();    //日期类获取实例
cd.add(Calendar.YEAR, 0);          
List list = new ArrayList();
try {
currentYear = dateformat.format(cd.getTime());
if(N>0){
for(int i=0;i<N;i++){
int year = Integer.parseInt(currentYear);
list.add(year-i);
}
}else if(N==0){
list.add(currentYear);
}

} catch (Exception e) {
e.printStackTrace();
}
return list;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值