Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    Strano problema Ajax - Asp

    Ragazzi ho uno strano problema: in pratica il risultato che mi viene restituito utilizzando ajax e asp mi compare per un secondo soltanto e poi mi da errore sulla query sql.
    l'esempio pratico potete vederlo a questo indirizzo:
    www.assoluto.it/applicativo
    USERNAME: zseven
    PASSWORD: zseven
    Selezionate dalla sinistra il 2°progetto.
    quindi dal menu in alto scegliete report e selezionate come numero ordine il 234.
    vedrete che vi caricherà un ordine. alla sinistra c'è un "+" che richiama la funzione in ajax.
    Cliccandoci vedrete che vengono caricati per un attimo i risultati corretti, ma poi mi da questo errore sql.
    Vi posto un pò di codice:
    questa è la funzione standard in ajax che viene richiamata al click del pulsante:
    codice:
    <script language="javascript">
    
      var ricerca_pro;
      
       
    function cerca() 
    {
        var valorecampo = document.form2.espandi.value;
        // branch for native XMLHttpRequest object
        if (window.XMLHttpRequest) {
            ricerca_pro = new XMLHttpRequest();
            ricerca_pro.onreadystatechange = ricevi;
            ricerca_pro.open("GET", "det_report_fatture.asp?id="+valorecampo,true);
            ricerca_pro.send(null);
        // branch for IE/Windows ActiveX version
        } else if (window.ActiveXObject) {
            ricerca_pro = new ActiveXObject("Microsoft.XMLHTTP");
            if (ricerca_pro) {
                ricerca_pro.onreadystatechange = ricevi;
                ricerca_pro.open("GET", "det_report_fatture.asp?id="+valorecampo,true);
                ricerca_pro.send();
            }
        }
    }
    
         
      function ricevi() {   
        var strRes;       
        var arrValori;      
    	  if (ricerca_pro.readyState == 4) {	    
    		  document.getElementById("det_fattura").innerHTML=ricerca_pro.responseText;
    		 }
    	}
    </script>
    questo è il pulsante:
    codice:
    <form name="form2" style="margin:0">
    			  <input title="espandi selezione" type="image" src="images/plus.gif" onClick="cerca();">
    			  <input type="hidden" name="espandi" value="<%=rs2("ID_ordini")%>">
    			  </form>
    e infine questa è la pagina che viene richiamta dalla funzione ajax.
    è una semplice query che mi restituisce un report:
    codice:
    <link href="style.css" rel="stylesheet" type="text/css" />
    <%
    	'apro connessione e istanzio oggetti
    
    	pid = Request.QueryString("id")
    	if pid <> "" then
    	strsql = "SELECT tab_ordini.*, tab_fornitori.*, tab_fatture.* FROM tab_ordini, tab_fornitori, tab_fatture WHERE tab_fatture.id_progetto = " & Session("ID_progetto") & " AND tab_ordini.ID_ordini = tab_fatture.id_ordine AND tab_fornitori.ID_fornitori = tab_fatture.id_fornitore AND tab_fatture.elimina_fattura = false AND tab_fatture.id_ordine = "&pid&" ORDER BY tab_fatture.data_ft, tab_fatture.num_ft, tab_ordini.numero_ordine DESC"
    	set rs = conn.execute(strsql)
    	
    	if not rs.eof then
    		
    %>
    <table class="contenuti" style="border-collapse:collapse;" border="1" width="900" cellpadding="3" cellspacing="0">
                <tr bgcolor="#C5C5C5">
    			  <td ><span class="menu_bold">FORNITORE</span></td>
    			  <td width="65"><span class="menu_bold">FATTURA</span></td>
    			  <td width="100"><span class="menu_bold">DATA FATTURA</span></td>
    			  <td ><span class="menu_bold">DESCRIZIONE</span></td>
    			  <td ><span class="menu_bold">IMPORTO</span></td>
    			  <td width="50"><span class="menu_bold">ANTICIPO</span></td>
                </tr>
    
    			<%
    			conta = 0
    			Do While Not rs.EOF
    
    			conta = conta + 1
    	  		if conta MOD 2 = 0 then
    		    bg = "#F8F8F8"
    	        Else
    	        bg = "#ECECEC"
    	        end if
    			
    			old_data = rs("data_ft")
          		anno = left(old_data, 4)
          		mese = mid(old_data, 5, 2)
          		giorno = mid(old_data, 7, 2)
          		data = giorno & "/" & mese & "/" & anno
    			
    			if rs("conto_anticipo") = True then
    			conto_anticipo = "Sì"
    			else
    			conto_anticipo = "No"
    			end if
    			
    			descrizione = replace(rs("descrizione_ft"), "
    ", VbCrlF)
    			
    			%>
               <tr bgcolor="<%=bg%>">
                  
    			  <td ><span class="contenuti"><%=rs("denominazione_fornitore")%></span></td>
    			  <td ><span class="contenuti"><%=rs("num_ft")%></span></td>
    			  <td ><span class="contenuti"><%=data%></span></td>
    			  <td ><span class="contenuti" style="cursor:help" title="<%=server.HTMLEncode(descrizione)%>"><%=left(rs("descrizione_ft"),20)%>[...]</span></td>
    			  <td ><span class="contenuti">€<%=formatnumber(rs("importo_ft"), 2)%></span></td>
    			  <td ><span class="contenuti"><%=conto_anticipo%></span></td>
                </tr>
                <%
    			rs.MoveNext
    			Loop
    			%>
              </table>
    <%
    	end if
    	end if	
    
    %>
    mi rendo conto che è un pò uncasino ma mi servirebbe davvero una mano.
    Grazie a tutti.
    Se non sono stato chiaro cercherò di spiegarmi meglio

  2. #2

    ...........

    Ciao.
    Scusa la risposta affrettata (non ho modo di testare il tutto)
    (e non conosco asp) per quanto riguarda js
    ricerca_pro non è visibile da ricevi() in quanto
    è una variabile locale a cerca() .
    Dividi cerca() per istanziare XMLHttpRequest poi
    ie cerca2() altro stuff e dichiari globale XMLHttpRequest
    con var req = cerca();


    Ops
    var ricerca_pro;
    non avevo visto
    questo pezzo





    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    grazie mille per la risposta, ma purtroppo io non conosco bene js ed il tuo aiuto mi è abbastanza oscuro...
    potresti scrivermi il codice un pochino piu dettagliato?

    Facendo altre prove ho verificato una cosa:
    dopo aver cliccato sul pulsante "+" la pagina che mi restituisce la funzione ajax combinata alla asp ha queste strane incognite:
    report_ordini2.asp?ordine=396&x=12&y=6
    onestamente x e y non so proprio cosa possano essere...

    Grazie!

  4. #4

    ....

    Scusa per prima non avevo visto la dichiarazione
    di var globale cq ti conviene fare una cosa del genere
    Codice PHP:
    <html>
        <
    head>
            <
    title>The Hello World of AJAX</title>
            <
    script language="JavaScript" type="text/javascript">
                
    //Gets the browser specific XmlHttpRequest Object
                
    function getXmlHttpRequestObject() {
                    if (
    window.XMLHttpRequest) {
                        return new 
    XMLHttpRequest(); //Not IE
                    
    } else if(window.ActiveXObject) {
                        return new 
    ActiveXObject("Microsoft.XMLHTTP"); //IE
                    
    } else {
                        
    //Display your error message here. 
                        //and inform the user they might want to upgrade
                        //their browser.
                        
    alert("Your browser doesn't support the XmlHttpRequest object.  Better upgrade to Firefox.");
                    }
                }            
                
    //Get our browser specific XmlHttpRequest object.
    ///////////////////////////////////
    ////////////////// L'OBJECT DI TIPO XMLHttpRequest la dichiari globale qui
    ///////////////////////////////////
                
    var receiveReq getXmlHttpRequestObject();        
                
    //Initiate the asyncronous request.
                
    function sayHello() {
                    
    //If our XmlHttpRequest object is not in the middle of a request, start the new asyncronous call.
                    
    if (receiveReq.readyState == || receiveReq.readyState == 0) {
                        
    //Setup the connection as a GET call to SayHello.html.
                        //True explicity sets the request to asyncronous (default).
                        
    receiveReq.open('GET''SayHello.html'true);
                        
    //Set the function that will be called when the XmlHttpRequest objects state changes.
                        
    receiveReq.onreadystatechange handleSayHello
                        
    //Make the actual request.

                        
    receiveReq.send(null);
    alert(receiveReq.responseText);
    //alert(receiveReq.getAllResponseHeaders());
                    
    }            
                }
                
    //Called every time our XmlHttpRequest objects state changes.
                
    function handleSayHello() {
                    
    //Check to see if the XmlHttpRequests state is finished.
                    
    if (receiveReq.readyState == 4) {
                        
    //Set the contents of our span element to the result of the asyncronous call.
                        
    document.getElementById('span_result').innerHTML receiveReq.responseText;
                    }
                }
    window.onload = function()
    {
        if (
    document.addEventListener
        { 
            
    document.getElementById('pi').addEventListener('click',sayHello false); 
        } 
        else 
        { 
            
    document.getElementById('pi').attachEvent('onclick'sayHello); 
        } 
    }
                
    </script>
        </head>
        <body>
            
            [url="#"]Say Hello[/url]

            
            <span id="span_result"></span>
        </body>
    </html> 
    Per

    eport_ordini2.asp?ordine=396&x=12&y=6
    Usa la function escape come riportato in questo articolo

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    whiser grazie mille per l'aiuto, ma come ti avevo detto non sono molto pratico di js e ajax, e il codice che mihai scritto non riesco a modificarlo per quello che serve a me.
    Lo stesso per quanto riguarda la funzione escape.
    Io non devo dividere delle variabili, devo solo capire da dove escono fuori quelle x e y, che non c'entrano nulla.

    riuscite ad aiutarmi ragazzi?
    Grazie ancora

  6. #6
    allora ho capito il problema!
    è dato dall'utilizzo di input type button!
    ho provato infatti usando invece di:
    codice:
    <input title="espandi selezione" type="image" src="images/plus.gif" onClick="cerca();">
    			  <input type="hidden" name="espandi" value="<%=rs2("ID_ordini")%>">
    ho usato:
    codice:
    <select name="ordine" onChange="cerca();">
    			  	<option value="" selected="selected">ESPANDI</option>
    			  	<option value="<%=rs2("ID_ordini")%>"><%=rs2("ID_ordini")%>----<%=rs2("numero_ordine")%></option>
    			  </select>
    E funziona perfettamente.
    L'unico problema è che non posso utilizzare questa soluzione, perchè un elenco a discesa per visualizzare dei dettagli è davvero brutto e non facile da capire.
    Come posso fare per risolvere il problema adesso?
    Mi basta poter mettere unbottone come avevo fatto all'inizio.

    Grazie!

  7. #7
    <input title="espandi selezione" type="image" src="images/plus.gif" onClick="cerca();">
    Io non devo dividere delle variabili, devo solo capire da dove escono fuori quelle x e y, che non c'entrano nulla.
    Sono le coordinate del punto dell'immagine su cui hai fatto clic


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    whisher grazie per gli aiuti.
    Alla fine ho optato per utilizzare l'elenco a discesa con un "+" ed un "-".
    codice:
    <select class="form_text" name="ordine" onChange="cerca();">
    			  	<option value="" selected="selected">-</option>
    			  	<option value="<%=rs2("ID_ordini")%>">+</option>
    </select>
    e questo per recuperare il valore per la funzione ajax
    codice:
        var valorecampo = document.form2.ordine.options[document.form2.ordine.selectedIndex].value;
    Funziona tutto bene quando ho un solo elenco a discesa, ma se per caso ho due righe corrispondenti a due ordini differenti, quando clicco sull'elenco a discesa non succede niente.
    Credo che dipenda dal fatto che non è univoco il nome che ho dato all'elenco a discesa. Cioè che anche se ne ho 10 si chiameranno tutti "ordine", e quindi nonriesce a capire che valore prendere.
    Ho pensato di poter fare un ciclo per assegnare un nome con un numero progressivo vicino, ma poi come faccio a recuperare il nome che creo nella funzione ajax?

    Spero di essermi spiegato bene.
    Grazie mille per gli aiuti!

  9. #9

    ...........

    Scusa ma non ho capito
    come fai nella stessa form
    a passare + valori a cerca
    nel senso che quando l'evento
    è posto su onChange una volta
    che hai selezionato l'option è fatta
    cioè recuperi quel valore e basta
    Se vuoi recuperare + valori metti
    l'evento su onsubmit ma poi di conseguenza
    devi cambiare tutto lo script (cioè passarai
    + valori a get o post e di conseguenza alla
    riquesta XMLHttpRequest).


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  10. #10
    cerco di spiegarmi meglio.
    la form sta all'interno di un ciclo:
    codice:
    Do While Not rs2.EOF
    <tr bgcolor="<%=bg%>">
                  <td width="51">
    			  <form name="form2" style="margin:0">
    			  <select class="form_text" name="ordine" onChange="cerca();">
    			  	<option value="" selected="selected">-</option>
    			  	<option value="<%=rs2("ID_ordini")%>">+</option>
    			  </select>
    
    			  </form>
    			  </td>
                  <td ><span class="contenuti"><%=rs2("nome_voce")%></span></td>
    			  <td ><span class="contenuti"><%=rs2("denominazione_fornitore")%></span></td>
    			  <td ><span class="contenuti"><%=rs2("numero_ordine")%></span></td>
    			  <td ><span class="contenuti"><%=data%></span></td>
    			  <td ><span class="contenuti"><%=rs2("descrizione_ordine")%></span></td>
    			  <td ><span class="contenuti">€<%=formatnumber(rs2("importo_ordine"), 2)%></span></td>
    			  <td ><span class="contenuti"><%=emesso%></span></td>
                </tr>
    			<tr><td colspan="10">
    		  <div id="det_fattura">
    		  </div>			
    			</td></tr>
    
                <%
    			rs2.MoveNext
    			Loop
    			%>
              </table>
    In pratica ogni riga che il ciclo mi stampa ha il suo ID di riferimento, ed ho bisogno di associare, e quindi recuperare con la funzioone ajax, questo ID dall'elenco a discesa, in maniera tale da poter poi mostrare i dettagli per la riga in questione.

    Come ho spiegato quando il ciclo mi da una sola riga di risultato è tutto ok. Clicco sull'elenco a discesa e vengono mostrati i dettagli correttamente.
    Quando invece i risultati sono di piu ecco non funziona.
    Come posso risolvere il problema?

    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.