Ciao, ho un problema con una chiamata ajax:
al primo richiamo, funziona tutto correttamente, il problema è sul secondo richiamo: è come se non richiamasse la pagina, perchè non mi stampa nessuno dei trace che gli ho messo.
Quello che ho notato, è che se aspetto qualche minuto, tra una chiamata e l'altra, funziona tutto benissimo.
Al click su un bottone, richiamo la function lato client VINCOLI_SbloccaVincCont
allego sia il codice lato client,
sia il codice della pagina che richiamocodice:var XMLHTTP; function WEBAPPLICATION_CREATEXMLHTTPREQUEST() { if (window.ActiveXObject){ XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP"); } else{ if (window.XMLHttpRequest){ XMLHTTP = new XMLHttpRequest(); } } } function VINCOLI_SbloccaVincCont(P_GuidV,P_GuidC,P_Provenienza) { WEBAPPLICATION_CREATEXMLHTTPREQUEST(); XMLHTTP.onreadystatechange = showContents; XMLHTTP.open("GET","SBLOCCA.aspx?GuidV=" + P_GuidV + "&GuidC=" + P_GuidC + "&Provenienza=" + P_Provenienza, true); XMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); XMLHTTP.send(null); } function showContents() { if (XMLHTTP.readyState == 4) { if (XMLHTTP.status == 200) { alert(XMLHTTP.responseText) } else { alert(XMLHTTP.responseText) } } }
al priimo click del bottone, funziona tutto, vedo anche la riga della tracecodice:<%@ Page Language="VB" %> <%@ Import NameSpace="System.Data.SqlClient" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server" runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Trace.Warn("Richiamato") Dim Eccezione As Boolean = False Dim GUID_V As String = Request.QueryString("GuidV") Dim GUID_C As String = Request.QueryString("GuidC") Dim Provenienza As String = Request.QueryString("Provenienza") Try Select Case Provenienza Case "V" SbloccaV(GUID_V) Case "C" SbloccaC(GUID_C) Case Else Throw New ApplicationException("Provenienta " & Provenienza & " non gestita") End Select Catch ApEx As ApplicationException Response.Write("Eccezione Applicativa: " & ApEx.Message) Response.End() Catch ex As Exception Response.Write("Eccezione Generica: " & ex.Message) Response.End() End Try Response.Write("Sblocco Avvenuto con successo") Response.End() End Sub Public Sub SbloccaV(ByVal GuidV As String) Dim Eccezione As Boolean = False Dim Sblocco As Integer Dim myTrans As SqlTransaction Dim ConnString As String = APPLICATION_GETCONNECTIONSTRING("KEY") Dim objConn As New SqlConnection(ConnString) Dim QuerySbloccaV As New StringBuilder() QuerySbloccaV.Append("UPDATE T_VNC_V SET UserLock=null,DataOraLock=null WHERE GUID_V='") QuerySbloccaV.Append(GuidV) QuerySbloccaV.Append("'") Dim QuerySbloccaC As New StringBuilder() QuerySbloccaC.Append("UPDATE T_VNC_C SET UserLock=null,DataOraLock=null WHERE GUID_V='") QuerySbloccaC.Append(GuidV) QuerySbloccaC.Append("'") Try objConn.Open() myTrans = objConn.BeginTransaction() Dim objCmdV As New SqlCommand(QuerySbloccaV.ToString(), objConn) objCmdV.Transaction = myTrans Sblocco = objCmdV.ExecuteNonQuery() Dim objCmdC As New SqlCommand(QuerySbloccaC.ToString(), objConn) objCmdC.Transaction = myTrans Sblocco = objCmdV.ExecuteNonQuery() myTrans.Commit() Catch SqlEx As SqlException myTrans.Rollback() Response.Write("Eccezione Sql in Sub SbloccaV: " & SqlEx.Message) Eccezione = True Catch ex As Exception myTrans.Rollback() Response.Write("Eccezione generica in Sub SbloccaV: " & ex.Message) Eccezione = True Finally objConn.Close() If Eccezione Then Response.End() End If End Try End Sub Public Sub SbloccaC(ByVal GuidC As String) Dim Eccezione As Boolean = False Dim Sblocco As Integer Dim myTrans As SqlTransaction Dim ConnString As String = APPLICATION_GETCONNECTIONSTRING("KEY") Dim objConn As New SqlConnection(ConnString) Try objConn.Open() myTrans = objConn.BeginTransaction() Dim QuerySbloccoContratti As New StringBuilder() QuerySbloccoContratti.Append("UPDATE T_VNC_C SET UserLock=null,DataOraLock=null WHERE GUID_C='") QuerySbloccoContratti.Append(GuidC) QuerySbloccoContratti.Append("'") Dim objCmd As New SqlCommand(QuerySbloccoC.ToString(), objConn) objCmd.Transaction = myTrans Sblocco = objCmd.ExecuteNonQuery() myTrans.Commit() Catch SqlEx As SqlException myTrans.Rollback() Response.Write("Eccezione sql in sub SbloccaC: " & SqlEx.Message) Eccezione = True Catch ex As Exception myTrans.Rollback() Response.Write("Eccezione generica in sub SbloccaC: " & ex.Message) Eccezione = True Finally objConn.Close() If Eccezione Then Response.End() End If End Try End Sub </script> <html> <head> <title>Sblocca</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
al secondo click, effettuato subito dopo
mi da subito il messaggio "Sblocco Avvenuto con successo", ma di fatto sul database non fa nulla (nonostante abbia risettato i valori con dei valori non null), e sulla pagina del trace, non vedo nemmeno che la pagina è stata richiamata...
Spero di essere stato chiaro,
Grazie!

Rispondi quotando