1. $.ajax提交请求进行数据更新,并通过回调进行有效提示

function updateAudit(dispacher, control) {
var currentpage = document.getElementById("currentpagevalue").value;
var count = 0;
var frm = document.dataListFrom;
var tmp;
for (i = 0; i < frm.elements.length; i = i + 1) {
var e = frm.elements[i];
if (e.type === control && e.checked === true) {
count = count + 1;
tmp = e.value;
}
}
if (count > 0) {
$.ajax({
type: "post",
url: dispacher,
data: {"insurCode" : tmp,
"currentPage" : currentpage,
"pageDirection" : 'current'
},
success: function(data) {
if(data == 'OK' && dispacher=='dataAuditAction.do?action=updateAuditById'){
alert( '审核成功!点击确定刷新列表');
seachHeadPage('');
}else if (data == 'OK') {
alert( '审核成功!点击确定刷新列表');
location.reload();
}else{
alert('审核失败,请稍后再试!');
}
},
error: function(data) {
alert("系统错误,请稍后再试!");
}
})
} else {
alert("请选择一条记录!");
}
} 更新数据后的JAVA回写代码
boolean boo= auditService.updateAuditById(insurCode);
if(boo){
response.getWriter().write("OK");
}else{
response.getWriter().write("NO");
}
response.getWriter().flush();
response.getWriter().close();

$.ajax({})优劣:

优势:提交请求时,可以是实现回调,进而判断该请求是处理成功还是处理失败了
劣势:不支持流文件的回调。例如当你对生成的excle文件进行下载是使用$.ajax({})是无法实现的,除非...使用组合,将在该文的最后进行列举说明
2、模态提交请求弹出新窗口,且该窗口不关闭是无法对父页面/其他页进行操作

操作1:父页面代码:
//通过模态框提交请求的代码:
var dispacher=='auditAction.do?action=updateById';
var temp = window.showModalDialog(
dispacher + "&insurCode=" + tmp + "&currentPage=" + currentpage +"&pageDirection=current",
window,
'dialogHeight=750px;dialogWidth=1000px;dialogRight=40px;dialogTop=30px;center:yes');
//子页面保存操作成功后刷新该页面的查询列表
if (temp == 'saveSuccess'&& dispacher=='auditAction.do?action=updateById') {
seachHeadPage('');
} 操作2:
在弹出子页面中点击【保存】按钮,数据保存成功,并向父页面传递子页面数据保存成功标识'saveSuccess'
var isFinished = "<c:out value='${isUpdate}'/>";
if(isFinished == 'true'){
load();
alert("审核成功!");
window.returnValue = 'saveSuccess';
window.close();
}else if(isFinished != 'true'&& isFinished !=""){
alert("系统保存失败,请与系统管理员联系!");
}
子页面保存数据后的JAVA回写代码
boolean isUpdate= auditService.updateAuditById(insurCode);
map.put("isUpdate", isUpdate + "");
return new ModelAndView(this.auditDetail, map);

模态/非模态框语法:

1)window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
2)window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。
使用方法:
vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])
参数说明:
要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,
sURL--必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments--可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures-- 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
a、dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5以上是px,为方便其见,在定义modal方式的对话框时,用px做单位。
b、dialogWidth: 对话框宽度。
c、dialogLeft: 离屏幕左的距离。
d、dialogTop: 离屏幕上的距离。
e、center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
f、help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
g、resizable: {yes | no | 1 | 0 } 〔IE5+〕:是否可被改变大小。默认no。
h、status: {yes | no | 1 | 0 } 〔IE5+〕:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
i、scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。
下面几个属性是用在HTA中的,在一般的网页中一般不使用。
10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

模态/非模态框优劣:
优势:可灵活的对弹框进行设置(大小、是否居中、滚动条)等,且能够传递参数给父页面,非常实用。
功能上的缺点暂时没有发现,书写上有点繁杂。

3、window.open()提交请求并新打开一个标签页

function searchAuditNew(dispacher) {
window.open(
dispacher,
'',
'height=630,width=810,top='
+ (screen.height - 630)
/ 2
+ ',left='
+ (screen.width - 810)
/ 2
+ ',toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no,status=no,center=yes'
);
}

window.open()语法:

window对象的open()方法:用于打开一个新的浏览器窗口或查找一个已命名的窗口
用法1):
window.open("http://www.baidu.com","_blank");
//默认就是开启一个新窗口,老窗口称为父窗口,新窗口称为子窗口
参数取值:
_blank -- 打开一个新窗体
_parent -- 在父窗体中打开
_self -- 在本页打开,此为默认值
_top -- 在上层窗体中打开
_search --同时打开搜索窗口 用法2):
window.open(URL,name,features,replace)
参数取值:
a、URL:一个可选的字符串
声明了要在新窗口中显示的文档的 URL。如果省略了这个参数,或者它的值是空字符串,那么新窗口就不会显示任何文档。
b、NAME:一个可选的字符串
该字符串是一个由逗号分隔的特征列表,其中包括数字、字母和下划线,该字符声明了新窗口的名称。
这个名称可以用作标记 <a> 和 <form> 的属性 target 的值。如果该参数指定了一个已经存在的窗口,那么 open() 方法就不再创建一个新窗口,而只是返回对指定窗口的引用。在这种情况下,features 将被忽略。
c、features:一个可选的字符串
声明了新窗口要显示的标准浏览器的特征。如果省略该参数,新窗口将具有所有标准特征
d、replace:一个可选的布尔值。
规定了装载到窗口的 URL 是在窗口的浏览历史中创建一个新条目,还是替换浏览历史中的当前条目。支持下面的值:
true - URL 替换浏览历史中的当前条目。
false - URL 在浏览历史中创建新的条目。

window.open()优劣:
优势:是window本身具有的方法,兼容性强,父子之间数值传递操作容易实现(待补充)
缺点:无法实现子页面不关闭就无法对父页面操作这样的功能

4、href属性

1)作为LINK标签的属性,指向所引用文件的URL地址
<LINK href="./jsp/css/page_style.css" type="text/css" rel="stylesheet"> 2)base标签为页面上的所有链接规定默认地址或默认目标。
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<head>
<base href="<%=basePath%>">
</head> 3)a标签定义超链接,用于从一张页面链接到另一张页面
<a href="<%=path%>/auditAction.do?action=auditInfoView&pageDirection=first&currentPage=<c:out value='${currentpage}'/>" class="a1">首页</a>
说明:如果该页面中添加了<base href="<%=basePath%>"> ,那么该超链接中是不需要添加<%=path>/的 4)window.location.href 属性来访问(Location 对象是 Window 对象的一个部分)
<input type='button' name='close' value='返回' onclick="javascript:window.location.href='input.do?action=inputView';" />
说明:
"window.location.href"、"location.href"是本页面跳转
"parent.location.href"是上一层页面跳转
"top.location.href"是最外层的页面跳转
"window.location.reload()"本页面重新加载

herf属性优劣

优势:灵活,页面中的链接跳转通常采用此种方法
劣势:当传递的参数较多时,代码显得不美观,且其提交参数方式为浏览器默认的方式(get请求),存在中文时会出现乱码问题,需要特殊处理window.location.href=dispatcher+"&custName="+encodeURI(custname)+"&isNormal="+encodeURI(isNormal);java.net.URLDecoder.decode(custname, "utf-8").trim();//属于rt.jar包中类

5、通过Form对象的submit()提交

var frm=document.forms('tranDataFrom');
frm.action='hisAction.do?action=doSearch&pageDir='+pageDir;
frm.submit();
优劣:方便,无法实现实现回调;

6、jquery-form.js中的ajaxSubmit()

<input type="hidden" id="isNormal" name="isNormal" value="<c:out value="notNormal"/>"/>
var isNormal="notNormal";//导出数是否超范围标识
$(function(){
$("#inputFrom").ajaxSubmit(function(data){
if(data=="exportHuge"){
alert("查询结果数据量偏大,请缩小查询范围!");
}else if(data=="normal"){
isNormal="normal";
$("#isNormal").val(isNormal);
document.getEleById("inputFrom").submit();
}
});
});
更新数据后的JAVA回写代码
if(auditList.size()>=65536&&"notNormal".equals(isNormal)){
response.getWriter().write("exportHuge");
response.getWriter().close();
return null;
}else if("notNormal".equals(isNormal)&&auditList.size()<65536){
response.getWriter().write("normal");
response.getWriter().close();
return null;
}else if ("normal".equals(isNormal)) {
System.out.println("开始导出excle操作");
}

优势:提交请求时,可以是实现回调,进而判断该请求是处理成功还是处理失败了
劣势:不支持流文件的回调。但是可以通过组合触发请求的方式来实现

以上均是自己的均是自己的理解,可能有不准确的地方,如若发现请网友评论指出,谢谢!

十三、$.ajax、模态/非模态框、window.open()、href属性、submit()等提交请求优劣及问题解决方法的更多相关文章

  1. 关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)

    对于模态非模态对话框默认是不响应菜单的UPDATE_COMMAND_UI消息的,需要增加对WM_INITMENUPOPUP消息的处理以后,才可以响应UPDATE_COMMAND_UI. void CX ...

  2. Qt5教程: (7) 模态/非模态对话框

    模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭. 非模态对话框就是在被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 1. ...

  3. Qt对话框_模态/非模态

    对话框在Qt GUI应用程序中有着广泛的用途,对话框有模态.非模态两种情况. 对于参数选择的对话框,一般用模态对话框:对于显示或查看某些内容的对话框,一般用非模态对话框. 对话框类QDialog,官方 ...

  4. _ZNote_Qt_对话框_模态非模态

    QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框 ...

  5. window.location.href在微信端不起作用的解决方法?

    在我从第一张图的某个活动进去到详情页,点击返回是可以的,这里我是用了一个click事件,window.location.href="某死链接" 但是第二次进去点击之后点击事件是可以 ...

  6. Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法

    一.简述 先简单介绍一下模态与非模态对话框. 模态对话框 简单一点讲就是在弹出模态对话框时,除了该对话框整个应用程序窗口都无法接受用户响应,处于等待状态,直到模态对话框被关闭.这时一般需要点击对话框中 ...

  7. QT模态对话框及非模态对话框

    QT模态对话框及非模态对话框 模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对 ...

  8. MFC中的模态对话框与非模态对话框

    模态对话框创建: MyDialog mydlg; mydlg.DoModal() 当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行. 模态对话框的关闭顺序: OnCl ...

  9. Qt - QDialog,QWidget实现模态及非模态(模态Widget不能有父窗口,如果设置无边框就不能阻塞父窗口,但是可以强行设置指定Qt::Dialog,还可以setAttribute(Qt::WA_ShowModal),很多讲究)good

    在Qt中QDialog为“窗口”,而QWidget为“部件”,首先还是了解下<Qt 窗口与部件的概念>. 对于 QDialog 的模态及非模态是直接可以实现的,很多课本中都会提到,此处总结 ...

随机推荐

  1. Plastic Bottle Manufacturer - Consumer Demand For Plastic Bottles Becomes Higher

    Since transparent containers enable consumers to clearly see the contents, consumers are increasingl ...

  2. CSS3绘制不规则图形,代码收集

    三角形系列(三角形.倒三角.左三角.右三角.左上三角.右上三角.左下三角.右下三角) 主要用到的是:宽度高度设置为0, border的各个边的设置(各个边的透明或不透明): .triangle-up ...

  3. 【代码总结】PHP面向对象之常见的关键字和魔术方法

    一.关键字的使用 1.final关键字 只能用来修饰类 和 成员方法  不能修饰成员属性 被final修饰的类不能被继承 用final修饰的成员方法 不能被子类覆盖(重写) <?php // f ...

  4. ArrayList、Vector和LinkedList

    List接口特点 1.有序的 collection. 2.可以对列表中每个元素的插入位置进行精确地控制. 3.可以根据元素的索引访问元素,并搜索列表中的元素. 4.列表通常允许重复的元素. 5.允许存 ...

  5. Java单例和多例

    背景:最近在学习韩老师的笔记时候发现不是很了解单例和多例,于是通过网上查找资料的方式去学习. 设计模式:最佳的实践,是软件开发人员在软件开发过程中面临一般解决方案,也就是开发的经验总结. 单例模式(S ...

  6. 虚拟交换系统-VSS

    1.虚拟交换系统VSS技术概述 VSS的特点: VSS将两台Catalyst 6500/4500系列交换机组合为单一虚拟交换机,对外来看,只有一台交换机,管理冗余链路如同管理自己的一个单一接口. VS ...

  7. java 关于多层的异常捕获

    从这两个源程序可以看出来,这里的逻辑其实很好理清楚. 可以看到,每次抛出了相同的错误,但因为catch后的捕捉类型不同,所以结果不同,其实可以看出多层的异常捕捉和正常的多层代码运行逻辑是基本一致的.

  8. Python笔记⑤爬虫

    爬虫的前奏 # 爬虫前奏 # 明确目的 # 找到数据对应的网页 # 分析网页的结果找到数据所在的标签位置 # 模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML # 用正则表达式 ...

  9. github 初体验

    一.什么是 Github? github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开. Github 由Chris Wanstrath, ...

  10. WPF TreeGrid Binding 简易实现方式

    在設計TreeView編輯狀況下,希望 TreeItemName 后续的编辑框 复选框 可以整齐排列. 参考微软提供的TREELISTVIEW,发现它是根据层级关系调整Margin 属性. 我这边按照 ...