【问题标题】:Classic ASP update on button click working only in IE not in other browsers按钮单击时的经典 ASP 更新仅适用于 IE,不适用于其他浏览器
【发布时间】:2019-09-03 07:06:37
【问题描述】:

我正在开发经典 ASP 应用程序,我从 sql 数据库填充了 html 表,该 html 表在其中一个单元格中有复选框,在复选框单击我打开一个弹出窗口,我正在执行一些更新并提交后,窗口自动关闭,上一页用更新的值刷新(这里的复选框被更新的值替换)。 使用 IE 可以正常工作,但不能使用其他浏览器进行更新。

为了测试弹出窗口,我评论了 javascript window close 并发现对于数据库中的 IE 数据更新,但在其他浏览器中它什么也不做。可能是 ADODB 设置的问题。我正在更新的数据是当前日期,一旦存储在数据库中,上一页将获取当前日期而不是复选框。

请帮忙,我是经典asp的新手。 更新:我打印了查询,在 IE 上打印正确,但在 Chrome 中打印第二个参数,右侧有一些空格。示例:在 IE 'SHP' 但在 Chrome 'SHP' 中

 <!-- language: lang-js -->

        function CloseWindow() 
        {
                var trackerreport = document.getElementById("trackerreport").innerText;
                var reporttype = document.getElementById("reporttype").innerText;
                var report = reporttype.trim();
                document.getElementById("Hidden1").value = trackerreport;
                document.getElementById("Hidden2").value = reporttype;      

             switch (report) 
             {
            case "SHP": 
                 document.frmDtls.hfrom.value = 'DelSHP' ;
                 break;
            case "WHS":
                document.frmDtls.hfrom.value = 'DelWHS' ;
                break;
            default:
                alert("None");
                break;
            }     
               document.frmDtls.method = "post" ;
               document.frmDtls.action = "PRDB_UPDATE_BATCH_ORDER_PROCESSING_TRACKER_REPORT_SEGMENT_TIMESTAMP.asp" ;
               document.frmDtls.submit();
               window.close();
               window.opener.location.reload();
        }



    <!-- language: lang-vb -->
        <div align="center">
        <p align="center">
        <input type="button" style="background:yellow;color:black;height:25px; width:100px" value="Confirm" onclick="javascript: return CloseWindow();"> 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <!--<input type="submit" style="background:yellow;color:black;height:25px; width:100px" value="Confirm" >  -->
        <input type="button" style="background:yellow;color:black;height:25px; width:100px" value="Cancel" onclick="javascript: return CancelWindow();">
        </p>
        </div>



        <%

            Set objCommand = Server.CreateObject ("ADODB.Command")  
            Set objRec = Server.CreateObject ("ADODB.Recordset")
            objCommand.ActiveConnection = strConnect

            Dim sConn
            Dim tracker
            Dim reporttype
            Dim trackernew

         If Request("hfrom") = "DelSHP" Then

                Set sConn = Server.CreateObject ("ADODB.Connection")
                sConn.Open strConnect

                tracker = Trim(Request("Hidden1"))
                trackernew = CInt(tracker)
                reporttype = Trim(Request("Hidden2"))
                username = Trim(Request("Hidden3"))
                objCommand.CommandText = "EXEC usp_UPDATE_BATCH_ORDER_PROCESSING_TRACKER_REPORT_SEGMENT '"&trackernew&"','"&reporttype&"','"&username&"'; "
                Set objRecord = objCommand.Execute
                sConn.Close
                Set objRecord = Nothing
                Set sConn = Nothing

        End If

        If Request("hfrom") = "DelWHS" Then

                Set sConn = Server.CreateObject ("ADODB.Connection")
                sConn.Open strConnect

                tracker = Trim(Request("Hidden1"))
                trackernew = CInt(tracker)
                reporttype = Trim(Request("Hidden2"))
                username = Trim(Request("Hidden3"))
                objCommand.CommandText = "EXEC usp_UPDATE_BATCH_ORDER_PROCESSING_TRACKER_REPORT_SEGMENT '"&trackernew&"','"&reporttype&"','"&username&"'; "
                Set objRecord = objCommand.Execute
                sConn.Close
                Set objRecord = Nothing
                Set sConn = Nothing

        End If
        %>

    <!-- language: lang-html -->

        <div align="center"><center>
        <form id="frmDtls" name="frmDtls">
        <input type="hidden" name="hfrom" value = "">
        <input id="Hidden1" name="Hidden1" type="hidden" runat="server" />
        <input id="Hidden2" name="Hidden2" type="hidden" runat="server" />
        <input id="Hidden3" name="Hidden3" type="hidden" runat="server" value="<%= l_username%>" />

        <table border="2" width="50%">
         <tr>
            <td width="40%" align="center" bgcolor="#C0C0C0"><strong><font size="2">Tracker Report ID </font><small>:</small></strong></td>
            <td id="trackerreport" width="60%" align="center" bgcolor="#C0C0C0"><strong><%=L_trackerreportid %></strong>&nbsp;</td>
         </tr>
         <tr>
            <td width="40%" align="center" bgcolor="#C0C0C0"><strong><font size="2">Segment Status Event </font><small>:</small></strong></td>
            <td id="reporttype" width="60%" align="center" bgcolor="#C0C0C0"><strong><%=L_reporttype %></strong>&nbsp;</td>
         </tr>

        </table>
        </center></div>

【问题讨论】:

  • 您的 HTML 中缺少结束 &lt;/form&gt;,这可能会阻止表单在其他浏览器中正确发布。
  • 也添加了结束标签,仍然没有运气
  • 嘿,我打印了查询,Chrome 正在打印参数报告类型,右侧有一些空格

标签: javascript html dom asp-classic adodb


【解决方案1】:

我解决了这个问题,由于某些原因,javascript 跳过了更新查询并直接关闭了 Chrome 上的窗口。完成更新后,我现在正在调用 javascript close 方法。

sConn.Close
    Set objRecord = Nothing
    Set sConn = Nothing
    Response.Write("<script language=javascript>CancelWindow();</script>") // added this line

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 2015-05-05
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多