2009-04-24
1、关于ajax的一点知识
ajax本身上异步交互的,这也是它的成功之处,但异步并不总是有用的,今天就遇到一个因为异步的引起的问题,就是提交表单时,要进行表单验证,其中有些表单是要进行ajax验证的:
function submitForm(){
var storeName=$("#storeName");
var url="${req.contextPath}/store/checkStoreName.action";
var flag=true;
$.post(url,{storeName:storeName.val()},
function(data){
if(data=="exist"){
showMsg_OnError(document.getElementById("storeName"),"店铺名已经存在");
flag=false;
}else{
flag=true;
showMsg_OnPass(obj);
}
});
if(!flag){
return false;
}
var storeClass=$("#storeClass");
if(storeClass.val()==""){
showMsg_OnFocus(document.getElementById("storeClass"),"请选择店铺类型");
storeClass.focus();
return false;
}
document.form1.submit();
}
在这段代码中有一段ajax验证的代码,同时一个哨兵flag,如果店铺名存在的话,就把flag设为false,然后在ajax调用后判断这个哨兵字段为false时,表单就不提交,但因为ajax是异步的,所以ajax在还没有来得及调用success后的方法,就调用submitForm()方法后面的代码了,而这时候的flag还是true(即使ajax验证店铺名存在),
解决这个问题的办法就是不要让ajax异步执行,这时候就得用jQuery的$.ajax()这个方法了:
var flag=true;
$.ajax({
type:"post",
url:url,
data:"storeName="+storeName.val(),
async:false,
success:function(data){
if(data=="exist"){
showMsg_OnError(document.getElementById("storeName"),"店铺名已经存在");
document.getElementById("storeName").focus();
flag=false;
}else{
flag=true;
showMsg_OnPass(document.getElementById("storeName"));
}
}
});
if(!flag){
return false;
}
2、用webwork的拦截器来过滤页面输入的HTML标签
package com.upcenter.interceptor;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.regex.*;
import javax.servlet.ServletContext;
import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.xwork.interceptor.Interceptor;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.opensymphony.webwork.ServletActionContext;
public class FilterInterceptor implements Interceptor {
/**
* 替换bean中的所有string类型字段的script等危险脚本 注意参数仅限于bean,不能为string等基础类型
* beanFieldWipeScript
*
* @param obj
* @throws Exception
* @return void
* @throws Exception
*/
public static void beanFieldWipeScript(Object obj) throws Exception {
if (obj == null)
return;
Field fieldsa[] = obj.getClass().getDeclaredFields(); // 取得clsa的所有field
Field fielda;
String ecclasspath = "com.upcenter.model";
// 在a中查找字段fieldname
for (int j = 0; j < fieldsa.length; j++) {
fielda = fieldsa[j];
if (fielda.getType().getName().toLowerCase().indexOf(
"java.lang.string") != -1) {// 属性为string类型
int mod = fielda.getModifiers();
String modifiers = Modifier.toString(mod).toLowerCase(); // 字段的修饰关键字
if (modifiers.indexOf("static") == -1
&& modifiers.indexOf("final") == -1) { // 不包含static和final关键字
fielda.setAccessible(true);
String tmpfieldvalue = fielda.get(obj) == null ? null
: (String) fielda.get(obj);
fielda.set(obj, wipeScript(tmpfieldvalue));
}
} else if (fielda.getType().getName().toLowerCase().indexOf(
ecclasspath) != -1) { // 为model时
fielda.setAccessible(true);
beanFieldWipeScript(fielda.get(obj));// 递归调用处理对象内的对象
}
}
//System.out.println("脚本过滤完毕:" + obj.getClass().getName());
}
/**
* 过滤script 过滤iframe 过滤on事件 wipeScript
*
* @param html
* @return
* @return String
* @throws Exception
*/
public static String wipeScript(String html) {
if (html == null){
return null;
}
//System.out.println("过滤前:"+html);
html = html.replaceAll("<", "<").replaceAll(">", ">");
//System.out.println("过滤后:"+html);
return html;
}
public void destroy() {
}
public void init() {
}
public String intercept(ActionInvocation invocation) throws Exception {
Object acionobj = invocation.getAction();
beanFieldWipeScript(acionobj); // 调用进行过滤
return invocation.invoke();
}
}
2009-04-27
1、在java中的正则表达式中,/s并不能匹配全角空格:要替换全角空格直接输入全角空格就可以了:
String keyWords = model.getKeyWords().replaceAll(" "," ");
2009-04-28
反过来用like,性能可能不好,但也不失为一种解决问题的思路,如下面:是否keyword包含非法字符
select * from dict_keyword_filter d where #keyword# like concat(concat('%',keyword),'%')
2009-04-29
1、jquery的:contains(text)的用法:
含意:匹配包含给定文本的元素
$("#more_courses #courses_table tbody tr").hide().filter(":contains("+$(this).val()+")").show();
2、一个正则表达式的网站,以前老是忘记
http://www.regexlab.com/zh/
3、jquery的index()方法
可以通过index取得元素的索引值,上代码:
$("td").hover(function(){
//alert($("li").index(this));
alert($("td").index(this));
});
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
分享到:
相关推荐
2017-02-04(yaya) Ls command: Empty Folder returns false. 2016-12-08(yaya) 修正lz4、vhd不显示解压缩进度指示。增加lzma解压缩进度指示。 2016-11-09(不点) 0x8205 bit 5 = 1: 使checkkey闲置循环...
1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...
1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...
1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...
1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...
1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...
Testinside 1Y0-A04最新题库,更新时间:2009-7-24
老版本的MW8209量产工具V1.1.1.0正式版,更新发布日期:2009-04-24此版本优化了系统兼容性、同时还优化了容量升级处理;优化了测试周边环境;可以制作可移动盘 本地盘 写保护盘 加密盘 ISO自动播放盘;还可以...
2008-04-24 人力资源管理软件修正了一些问题 解决模糊查询输入只要带有字母s报错的漏洞(感谢bravelc ) 人力资源管理软件解决人事合同按日期条件检索出错的问题(感谢Fantasy Ls ) 2008-04-29 人力资源管理软件...
0.7 - 2009-04-24: Added StickyScreen which makes windows automatically stick to the screen borders without needing shift (off by default). Added the ability to roll-up windows by double-clicking with ...
2009-04-24(发布2.6.5) [重大更改] 全新设计风格和模块,旧版风格全不能使用。 [重大更改] 为配合新风格,删除并新增一些模块。 [新增] 自动连播下一集功能,播放器代码变量{$skyuc_nextpage} [新增] 看过本片的...
libevent-1.4.12-stable.tar.gz [GPG Sig] - ChangeLog - Release 2009-07-24 libevent-2.0.2-alpha.tar.gz [GPG Sig] - ChangeLog - Release 2009-07-24 libevent-1.4.11-stable.tar.gz [GPG Sig] - ChangeLog - ...
首先,文件标题“RSPTW09-07-04-E01 R61581 a-Si HVGA Introduction[1].pdf”中透露了该文件是关于“RSPTW09-07-04-E01”项目的介绍,并且与特定组件“R61581”有关,其中“a-Si HVGA”很可能是该组件的一个型号或...
2009-06-24 23:42 1,596 使用GDI+绘制旋转的图形及图片.txt 2009-07-02 09:22 5,000 创建快捷方式Builder.txt 2009-07-02 01:37 9,018 双击打开文件.txt 2009-07-31 10:51 352 图像中心扩散.txt 2008-12-06 12:25 ...
- 发布日期:2009-04-01 21. **固件版本:01.08.10** - 量产工具版本:v1.08(ر)&v3.16 - 发布日期:2009-04-30 22. **固件版本:06.08.10** - 量产工具版本:v2.01&v3.08&v1.04 - 发布日期:2009-06-29 ...
2009-04-15 12:06 143,872 ContextMenuManager.exe 2006-12-30 03:02 110,592 DesktopCleaner.exe 2005-11-15 10:56 1,486,848 DevComponents.DotNetBar.dll 2007-01-04 04:58 344,064 DevExpress.Data3.dll 2005-11...
DateTime dateTime2 = Convert.ToDateTime("2009-04-24 20:00:00"); // 创建 TimeSpan 对象 TimeSpan ts1 = new TimeSpan(dateTime1.Ticks); TimeSpan ts2 = new TimeSpan(dateTime2.Ticks); // 计算时间差 ...
-参考http://www.cnblogs.com/sanshi/archive/2009/09/04/1560146.html#1635830 +添加对extjs3.0中所有语言的支持。 -ExtAspNet扩展的多语言包在js\languages\extaspnet目录下,目前只有en,zh_CN,zh_TW三种实现...
2009-04-21 11:36 475,024 ADExplorer.exe 2007-11-07 10:13 401,616 ADInsight.chm 2007-11-20 13:25 1,049,640 ADInsight.exe 2006-11-01 14:05 150,328 adrestore.exe 2006-11-01 14:06 154,424 Autologon.exe ...
2010-03-24 19:36 237,568 Explorer.dll 2010-06-04 15:56 110,592 FileSwitcher.dll 2010-06-04 15:59 3,584 guidguard.dll 2009-09-09 21:32 270,336 HexEditor.dll 2017-02-19 16:03 433,152 HTMLTag_unicode.dll...