Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10

    Ajax, problema sul secondo richiamo uguale

    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,
    codice:
    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)
    		}
    	}
    
    }
    sia il codice della pagina che richiamo
    codice:
    <%@ 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 priimo click del bottone, funziona tutto, vedo anche la riga della trace
    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!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    IE in caso di URL chiamato identico non effettua realmente la richiesta ma attinge il risultato dalla cache, per evitarlo devi fare la chiamata in POST o/e aggiungere un parametro sempre variabile, per esempio

    &br1=Math.random()
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10
    grazie, proverò subito lunedì mattina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.