2

フォームが埋め込まれた JSP ページがあり、JavaScript 経由でフォームを送信しています。

ページに約 10 ~ 50 個のアイテムがある場合、送信は正常に機能しますが、ページに約 500 個以上のアイテムがある場合は送信されません。

送信ボタンをクリックすると、ページは現在のページにとどまり、ロードし続けます。

この問題を解決するにはどうすればよいですか。

サンプルコードを以下に示します。

<html>
<script type="text/javascript">
function submitChecked() {
   var approveStr="";
   var approveArr=new Array();
   if(document.frmReleaseDetail.checkBoxVer.length != undefined)
   {
      for(var i=0; i < document.frmReleaseDetail.checkBoxVer.length; i++) 
      {
         if(document.frmReleaseDetail.checkBoxVer[i].checked)
         {
            approveStr +=document.frmReleaseDetail.checkBoxVer[i].value + ",";
            approveArr.push(document.frmReleaseDetail.checkBoxVer[i].value); 
         }
      }
      if(approveStr=="")
          alert("Please make a selection by clicking atleast one checkbox");
      else 
      {

        document.getElementById("passCheckVerVal").value=approveArr;
        document.forms["newForm"].submit();
      }
   }   //end of if checking multiple checkboxes
else   //if the page has only one checkbox(version)
   {
       if(document.frmReleaseDetail.checkBoxVer.checked)
       {
           window.location = "process.jsp?passCheckVer="+document.frmReleaseDetail.checkBoxVer.value+'&u_trackingRequestID=<%=request.getParameter("u_trackingRequestID")%>';
       }
       else
         alert("Please make a selection by clicking atleast one checkbox");
   }
}
</script>
<body>
<%
String newTrackingReqId=request.getParameter("u_trackingRequestID");
%>
<form name=frmReleaseDetail>
//jdbc code
//100's checkbox named checkBoxVer
//button to invoke submitChecked javascript function
</form>
<form name=newForm" id="newForm" action="process.jsp" method="post">
<input type="hidden" name="passCheckVer" id="passCheckVerVal"/>
<input type="hidden" name="u_trackingRequestID" id="u_trackingRequestIDVal" value="<%=newTrackingReqId%>"/>
</form>
</body>
</html>
4

2 に答える 2

0

formメソッドをPOSTに変更する必要があります。

<form name=frmReleaseDetail method="post">

デフォルトでは、メソッドはGETです。詳細については、こちらをご覧ください。GETではデータ制限の量がはるかに少なくなっています。

編集 :

1つの形式のみのコード提案:

<html>
<script type="text/javascript">
function submitChecked() {
   var checked = false;

   for(var i=0; i < document.frmReleaseDetail.checkBoxVer.length; i++) 
      {
         if(document.frmReleaseDetail.checkBoxVer[i].checked)
         {
            checked = true;
            break;
         }
      }

   if((document.frmReleaseDetail.checkBoxVer.length != undefined and checked) or (document.frmReleaseDetail.checkBoxVer.checked))
   {
      document.forms["frmReleaseDetail"].submit();
   }
else
   {
       alert("Please make a selection by clicking atleast one checkbox");
   }
</script>
<body>
<%
String newTrackingReqId=request.getParameter("u_trackingRequestID");
%>
<form id="frmReleaseDetail" name="frmReleaseDetail" action="process.jsp" method="post">
    <input type="hidden" name="u_trackingRequestID" id="u_trackingRequestIDVal" value="<%=newTrackingReqId%>"/>
//jdbc code
//100's checkbox named checkBoxVer
//button to invoke submitChecked javascript function
</form>
</body>
</html>
于 2013-03-19T05:43:05.627 に答える
0

初心者(初心者)の間違いを犯す人のために:


1: タイプは「ボタン」ではなく「送信」

良い/正しい: ----------------------------------------------

<input type="submit" value="some_button_label" />

悪い/間違っている: ----------------------------------------------

<input type="button" value="some_button_label" />

2: 送信ボタンはフォーム内にネストする必要があります。

良い/正しい: ----------------------------------------------

<form action="cookies-personalize-response.jsp">
    SEL_YOUR_FAV_PROG_LANG
    <select name="fav_lan">
        <option>LANG_01</option>
        <option>LANG_02</option>
        <option>LANG_03</option>
    </select>
    <input
        type ="submit"
        value="some_button_label"
    />
</form>

悪い/間違っている: ---------------------------------------------- --

<form action="cookies-personalize-response.jsp">
    SEL_YOUR_FAV_PROG_LANG
    <select name="fav_lan">
        <option>LANG_01</option>
        <option>LANG_02</option>
        <option>LANG_03</option>
        <option>LANG_04</option>
    </select>  
</form>
<input
    type ="submit"
    value="some_button_label"
/>

3: 修正後にページを参照し、ブラウザでソースを表示して、実際に変更されたことを確認します。最後の答えはばかげていますが、実際には、それは私が最も長く行き詰まったものです。

于 2018-07-14T17:36:13.277 に答える