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

    [ajax] Problema nel passaggio di variabili

    Salve forum sto cercando di creare un salvataggio dei dati in automatico dopo tot secondi ma ho qualche problema nel codice e non capisco dove sbaglio.

    I problemi sono due:
    - Utilizzo tinyMCE come editor di testo e se passo alla variabile il contenuto della textarea a volte viene recuperato ma tagliato alla prima parola e a volte non viene recuperato
    - Non si aggiornano dei dati che passo, per esempio la data e il testo dentro la texarea

    Vi posto il codice in utilizzo
    codice:
     $(document).ready(function(){			
    		autosave();
    });
    	
    function autosave(){
    	var t = setTimeout("autosave()", 40000);
    	var title = $("input[name='ArticoloTitolo']").val();
    	var content = $("#ed2").val(); // recupero il testo dalla textarea
    	var idAutoSave = $("#idAutoSave").val(); 
    	var dateAutoSave = $("input[name='dateAutoSave']").val();
    	// recupero la data da un input hidden con value uguale a date("Y-m-d G:i:s")
    	if (title.length > 0 || content.length > 0){
    		$.ajax({
    			type: "POST",
    			url: "../php/autosave.php",
    			data: "article_id=" + idAutoSave + "&title=" + encodeURIComponent(title) + "&dateAutoSave=" + dateAutoSave + "&content=" + encodeURIComponent(content),
    			cache: false,
    			success: function(message){	
    					$("#myAutosaved").empty().append(message);
    			}
    		});
    	}
    }
    Mi potreste indicare dove sbaglio? purtroppo non sono esperto di ajax

  2. #2
    Prova ad usare:
    tinyMCE.execCommand("mceCleanup");
    tinyMCE.triggerSave();
    prima di
    var content = $("#ed2").val(); // recupero il testo dalla textarea

    Per la data usa una variabile PHP in "../php/autosave.php", l'input lato client non si aggiorna da solo...

  3. #3
    Grazie mille, funziona alla grande... precisamente cosa fanno le istruzioni che hai indicato??

  4. #4
    Quello che vedi nell'editor non è esattamente quello che si trova nella textarea, le due istruzioni "puliscono" il codice, per esempio dai tag annidati, e lo "salvano" nella textarea.

  5. #5
    Grazie per la risposta
    ti chiedo un'ultima cosa, in questo momento viene inserito un messaggio con scritto last saved e viene aggiornata la data nel momento in cui l'operazione di autosalvataggio salva.

    Ho pensato di modificare questa aparte con una piccola icona di loading ma dovrebbe visualizzarsi solo quando viene eseguita l'operazione e non sempre... come posso eseguire questa operazione?

    Dovrò impostare un controllo dentro la funzione success, ma cosa devo scrivere?

  6. #6
    metti l'immagine di loading nel documento con style="visibility:hidden" e id="loadImage"

    Poi come primo rigo della funzione autosave:
    $('#loadImage').css('visibility','visible');//per mostrarla

    e come ultimo rigo della success:function
    $('#loadImage').css('visibility','hidden');//per nasconderla

  7. #7
    Prutroppo non si visualizza l'immagine ... In questo momento ho modificato il tempo di var t in 20000 .. credo che l'immagine non venga visualizzata perchè ci mette troppo poco a fare tutto il codice non ho modo di mettere uno sleep o un wait??

    Ovviamente se il problema è quello segnalato
    codice:
    function autosave(){
    	$('#loading').css('visibility','visibile');
    	var t = setTimeout("autosave()", 20000);
    	var title = $("input[name='ArticoloTitolo']").val();
    	tinyMCE.execCommand("mceCleanup");
    	tinyMCE.triggerSave();
    	var content = $("#ed2").val();
    	var idAutoSave = $("#idAutoSave").val();
    	
    	if (title.length > 0 || content.length > 0){
    		$.ajax({
    			type: "POST",
    			url: "../php/autosave.php",
    			data: "article_id=" + idAutoSave + "&title=" + encodeURIComponent(title) + "&content=" + encodeURIComponent(content),
    			cache: false,
    			success: function(message){	
    					$(".myForm").append(message);
    			        $('#loading').css('visibility','hidden');
    					
    					
    			}
    		});
    	}
    }

  8. #8
    Ho risolto con il seguente codice


    codice:
    $('#loading').hide();
    
    	var t = setTimeout("autosave()", 30000);
    	var title = $("input[name='ArticoloTitolo']").val();
    	tinyMCE.execCommand("mceCleanup");
    	tinyMCE.triggerSave();
    	var content = $("#ed2").val();
    	var idAutoSave = $("#idAutoSave").val();
    	
    	if (title.length > 0 || content.length > 0){
    		$('#loading').fadeIn(1500); 
    		$.ajax({
    			type: "POST",
    			url: "../php/autosave.php",
    			data: "article_id=" + idAutoSave + "&title=" + encodeURIComponent(title) + "&content=" + encodeURIComponent(content),
    			cache: false,
    			success: function(){	
    				    $('#loading').show();
    					$('#loading').fadeOut(1500);
    			}
    		});
    	}
    Ringrazio comunque lucavizzi

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.