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

    [AJAX] gestire la risposta

    Ciao a tutti,ho un problema nella gestione della risposta ad una chiamata AJAX praticamente ho bisogno di fare un controllo
    nel database per vedere se effettivamente sono stati inseriti dei link altrimenti devo mostrare un messaggio di errore e non eseguire la procedura..

    finora io mettevo una if che mi richiamava una funzione e mi restituiva un valore true se andava bene o un valore false se andava male del tipo:

    // CONTROLLO DELLA SELEZIONE DELLA CATEGORIA
    if(!checkCategory())
    {
    document.getElementById('ErrorCategory').innerHTML ='!) Devi selezionare una categoria.';
    }
    else
    {
    document.getElementById('ErrorCategory').style.dis play="none";
    }

    ma ora mi trovo un problema perchè facendo una chiamata Ajax non so quale risposta mi genera per poterla gestire lato Javascript...
    la mia funzione è questa:
    codice:
    	function checkSkVideo()
    	{
    		 if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
    		 {
    			xmlHttp.open("GET","../_script/_countControlVideo.php",true);
    			xmlHttp.onreadystatechange = checkSkVideoResponse;
    			xmlHttp.send(null);
    		 }
    	}
    	
    	function checkSkVideoResponse()
    	{
    		if(xmlHttp.readyState == 4)
    		{
    			if(xmlHttp.status == 200)
    			{
    				responseCountLink = xmlHttp.responseText;
    				  if(responseCountLink == '0'){
    					  document.getElementById("errorSkVideo").style.display="block";
    					  document.getElementById("errorSkVideo").innerHTML='!) Devi aggiungere almeno un link ad un Video!';
    				  }
    				  else{
    					document.getElementById("errorSkVideo").style.display="none";
    				  }
    			}
    			else
    			{
    				alert("C'è stato un problema nell'accesso al server:" + xmlHttp.statusText);
    			}
    		}
    	}
    il file php che richiama mi fa semplicemente una query di COUNT e mi restituisce il numero di record trovati...
    Ora vorrei sapere come faccio a recuperarmi questo valore nel momento in cui eseguo tutti i controlli?
    Perchè io se richiamo la funzione in questo modo:

    if(!checkSkVideo())
    {
    //non andare avanti
    }
    chiaramente non mi funziona perchè checkSkVideo non restituisce nulla...come posso fare?

  2. #2
    ho provato a mettere questo codice quando vado a richiamare la funzione:
    codice:
    		checkSkVideo(); // richiamo della funzione
    		
    		while(responseCountLinkCopy == '')
    		{
    			var finder = responseCountLinkCopy;
    				if(finder != '')
    					alert(finder);
    		}
    		if(responseCountLinkCopy >= 0)
    			responseCountLinkCopy = '';
    praticamente ho creato una variabile globale che inizializzo vuota e poi faccio un ciclo while che finchè non mi
    viene inizializzato non mi va avanti... il problema è che il browser mi da errore e mi dice di fermare lo script o continuare
    se io continuo effettivamente l'alert mi esce giusta ma come posso ovviare al problema del blocco?

  3. #3
    Ho inizialmente provato in questo modo a mettere un setTimeout che mi recupera la variabile dopo n secondi ma il problema rimane che essendo variabile il tempo per il recupero della risposta non sempre mi restituiva un valore veramente valorizzato...
    codice:
    setTimeout("var finder=responseCountLinkCopy; alert(finder); responseCountLinkCopy = '';", 1000);
    Ho quindi provato a fare una funzione che cercasse sempre il valore finchè non è valorizzato e facendo il debug con firebug funziona altrimenti senza debug no...Eppure mi sembra un procedimento corretto!! Dove sbaglio?
    codice:
    	  finder = '';	
    	  control();
    	  function control()
    	  {
    		  finder=responseCountLinkCopy; 
    		  if(finder != '')
    	  			DaRichiamare();
    		  else
    		  	setTimeout("control();", 500);
    	  }
    	  
    	  function DaRichiamare()
    	  {
    		  responseCountLinkCopy = '';
    		  alert(finder);
    	  }

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.