#javascript #html #dom #asp-classic #adodb
#javascript #HTML #dom #asp-classic #adodb
Вопрос:
Я работаю над классическим приложением ASP, у меня есть таблица html, заполненная из базы данных sql, в таблице html есть флажки в одной из ячеек, при нажатии флажка я открываю всплывающее окно, в котором я выполняю некоторое обновление, и после отправки окно автоматически закрывается, а предыдущая страница обновляется с обновленнымзначение (здесь флажок заменяется обновленным значением). Отлично работает с IE, но не обновляется с другими браузерами.
Для тестирования всплывающего окна я прокомментировал закрытие окна javascript и обнаружил, что для 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();">
amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;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 '"amp;trackernewamp;"','"amp;reporttypeamp;"','"amp;usernameamp;"'; "
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 '"amp;trackernewamp;"','"amp;reporttypeamp;"','"amp;usernameamp;"'; "
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>amp;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>amp;nbsp;</td>
</tr>
</table>
</center></div>
Комментарии:
1. Вам не хватает закрытия
</form>
в вашем HTML, что может помешать правильной публикации формы в других браузерах.2. Добавлен закрывающий тег, по-прежнему не повезло
3. Эй, я напечатал запрос, и Chrome печатает параметр reporttype с некоторым пробелом справа
Ответ №1:
Я исправил проблему, по некоторым причинам javascript пропускал запрос на обновление и напрямую закрывал окно в Chrome. Теперь я вызываю метод закрытия javascript после завершения обновления.
sConn.Close
Set objRecord = Nothing
Set sConn = Nothing
Response.Write("<script language=javascript>CancelWindow();</script>") // added this line