jspに2回のリクエスト(jquery)
html2.html作为中转,如果件数没有超过,那么经由html2.html再发送一次request,
如果件数超过,那么之前的画面不刷新,直接弹出来dialog.
・html層
html1.html
<button type = "button" id="csvDownloadButton" οnclick="doCsvDownLoad();"><img src="/XXX/csvfile.gif" hspace="3" border="0" alt=""/>ダウンロード</button>
var disableFlag = false;
function doCsvDownLoad() {
if(disableFlag){
return false;
}else{
disableFlag = true;
}
var form = $("[name=currentForm]");
appendChildToForm("shubetsu", "count");
$.ajax({
url: form.attr("action"),
type: form.attr("method"),
data: form.serialize(),
success: function(html){
$("[name=currentForm]").after(html);
checkOverMax();
}
});
}
html2.html
<script language="JavaScript" type="text/JavaScript">
<!--
function checkOverMax()
{
<#if isOverMaxFlg>
alert("最大件数を超えるため、10000件以下に絞込みを行ってください。");
enableButton();
<#else>
var form = document.getElementsByName("currentForm")[0];
appendChildToForm("shubetsu", "download");
form.submit();
setTimeout('enableButton()',5000);
</#if>
}
function enableButton(){
disableFlag = false;
}
-->
</script>
・java層
execute() {
// 1回目のリクエスト
if ("count".equalsrequest.getRequest("shubetsu")) {
// 件数を取得
count = ・・・
// 件数を超える場合
if (count>maxcount) {
response.set("isOverMaxFlg", "1");
}
response.forward("html2.html");
return;
}
// 2回目のリクエスト
response.forward("html1.html");
}