Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Ajax] Estrapolare variabili da query sql

    Ciao a tutti, ho il seguente problema: vorrei riuscire ad estrapolare i valori risultanti da una query sql come variabili di javascript e non come parti di html modificate dinamicamente... in poche parole:

    codice:
    function ajaxFunction($querystring){
    	var ajaxRequest;  // The variable that makes Ajax possible!
    	
    	try{
    		// Opera 8.0+, Firefox, Safari
    		ajaxRequest = new XMLHttpRequest();
    	} catch (e){
    		// Internet Explorer Browsers
    		try{
    			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    			try{
    				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e){
    				// Something went wrong
    				alert("Your browser broke!");
    				return false;
    			}
    		}
    	}
    	// Create a function that will receive data sent from the server
    	ajaxRequest.onreadystatechange = function(){
    		if(ajaxRequest.readyState == 4){
    			ajaxRequest.responseText;
                            //VORREI ESPORTARE QUESTA VARIABILE (response Text), QUI (*)
    		}
    	}
    	
    	ajaxRequest.open("GET", "ajax-example.php" + queryString, true);
    	ajaxRequest.send(null); 
    }
    
    function antani(){
        var query="SELECT BLA BLA BLA..."
        var res=ajaxfunction(query);
        //* QUI VORREI AVERE LA VARIABILE
    }
    chiaramente non funziona siccome entra nello stato 4 asincronicamente rispetto al normale flusso della funzione... ho quindi pensato ad utilizzare una variabie globae ma anche quello non funziona. una soluzione che ho trovato è stata la seguente; ma di qualità estremamente pessima, siccome dovrei riscrivere una funzione ajaxfunction per ogni utilizzo:

    codice:
    function antani(par1, par 2, par3, ..., risultato){
      if(risultato==undefined){
        var query="seect...";
        ajaxfunction(par1, par2, par3,....,query)
        return 0;
       }
       else{
        //evviva evviva ho il risultato sotto una variabile!!!
       }
    }
    
    function ajaxfunction(par1,par2,par3,...,query){
       [...]
       ajaxRequest.onreadystatechange = function(par1,par3,par3,...){
    		if(ajaxRequest.readyState == 4){
    			antani(par1,par2,par3,....,ajaxRequest.responseText);
    		}
    	}
       [...]
    }
    quacuno mi sa aiutare?? grazie!

  2. #2
    non vorrei dire, ma fare una funzione a parte che chiami nel onreadystatechange?
    codice:
    function ajaxFunction($querystring){
    ...
    ajaxRequest.onreadystatechange = function(){
    		if(ajaxRequest.readyState == 4){
    			antaniCallback(ajaxRequest.responseText);
    		}
    	}
    ....
    }
    
    function antani(query){
       ajaxFunction(query);
    }
    
    function antaniCallback(response){
       //qui ho la risposta del server
    }
    In questo modo sfrutti le funzionalità asincrone di AJAX in modo efficace.

    Comunque, mi permetto di farti notare una cosa: creare un file php che esegue il codice SQL passato è una PESSIMA idea.
    I DON'T Double Click!

  3. #3
    intanto grazie per la risposta.
    Con la tua soluzione però non si risolve il problema.. nel senso che dovrei modificare i corpo della funzione ajaFunction per ogni suo diverso utilizzo... cosa consigliate di utilizzare al posto di codice php per eseguire query sql in ajax? grazie!

  4. #4
    ho pensato a questo, ma non funziona, mi allerta sempre "undefined"...
    codice:
    function ajaxquery(query,functionres){
      var ajaxRequest;
      try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
      } catch (e){
        // Internet Explorer
        try{
          ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
          try{
    	ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (e){
    	alert("Hai un browser sfigato!");
    	return false;
          }
        }
      }
      ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
          functionres.call(ajaxRequest.responseText);
        }
      }
      var queryString = "?query=" + query;
      ajaxRequest.open("GET", "query_ajax.php" + queryString, true);
      ajaxRequest.send(null);
      return result;
    }
    
    function antani(par1,par2,par3) {
      antanicallback = function(res){
        alert(res);
      }
      var query = "SELECT ....";
      ajaxquery(query,antanicallback);
    }

  5. #5
    no, aspetta call non funziona così: il primo argomento è lo scope della funzione, i successivi gli argomenti passati:
    codice:
    if(ajaxRequest.readyState == 4){
          functionres.call(this, ajaxRequest.responseText); //Così lo scope è lo stesso ed il primo argomento è la risposta del server
        }
    I DON'T Double Click!

  6. #6
    a ok, grazie davvero, ora funziona
    Quali alternative proponevi per eseguire query in ajax?

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.