[risolto] passaggio variabile a pagina php con ajax

  • Creatore Discussione Creatore Discussione kmarx
  • Data di inizio Data di inizio

kmarx

Nuovo Utente
14 Apr 2014
4
0
0
Ciao a tutti,

questo è il mio primo post. Non sono molto esperto di javascript e mentre sto imparando avrei bisogno di un piccolo aiuto perché non riesco a far funzionare uno script.

Allora, io devo inviare una variabile Javascript ad una pagina php (che scrive quella variabile su un file lato server).
La variabile da inviare non è altro che un testo scritto in ckeditor in un'area editabile. Ci sto sbattendo la testa da un po' ma non riesco a farlo funzionare.

Qui il mio codice:

html (index.php)
HTML:
<div id="editable" contenteditable="true">
<?php
    include("chisiamo.html");
?>
</div> <!--editabile -->

javascript (in fondo a index.php)
Codice:
CKEDITOR.inline( 'editable' );

document.getElementById('editable').onkeyup = function() {
	var testo = CKEDITOR.instances.editable.getData();
        $.ajax({
		type: "POST",
		url: 'autosalva.php',
		data: {'testo': testo},
		success: function(data) {   
			if (!data) {
				alert("  Impossibile salvare!\nContatta il webmaster");
			}
		}
	});
};

php (autosalva.php)
PHP:
$testo = $_POST["testo"]; 
$file = fopen("chisiamo.html","w");
fwrite($file,$testo);
fclose($file);

Cosa sto sbagliando?

Grazie

Ciao
kmarx
 
Prima di tutto una considerazione logica: usare il keyup farà si che ad ogni tasto premuto verrà inviata una richiesta di scrittura al server, e non è la cosa propriamente più performante da fare, soprattutto se poi scrivi su un file che rischia di corrompersi se non imposti un adeguato lock per impedirne simultanee operazioni di scrittura/lettura su di esso.

Detto ciò, jquery è incluso correttamente nella pagina? Se si, ti consiglio di munirti di firebug (se sei su firefox), o di aprire la console di chrome (col tasto f12) e verificare quali errori ti ritorna javascript durante la pressione dei tasti sul box editabile.
 
Grazie per la risposta.

Per quanto riguarda le operazioni di scrittura/lettura ed eventuali corruzioni, sistemerò in modo che non avverrà la lettura e la scrittura dallo stesso file.

jQuery sembrerebbe essere incluso correttamente (infatti ckeditor funziona):

HTML:
<script type="text/javascript" language="javascript" src="js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>	
<script type="text/javascript" language="javascript" src="ckeditor/ckeditor.js"></script>

Effettivamente qualcosa di strano potrebbe esserci perché se aggiungo plugin a ckeditor (ad esempio autosave) mi sparisce la toolbar. Però pensando ad un bug di ckeditor ho deciso di aggirare il problema creando in proprio uno script di autosalvataggio.

Quando scrivo qualcosa nell'area editabile mi salta fuori l'alert da me imposto (" Impossibile salvare!\nContatta il webmaster"). Firebug mi da il seguente errore:
Codice:
TypeError: $(...).ckeditor is not a function
indicandomi che il guaio risiede nel seguente script:
Codice:
CKEDITOR.disableAutoInline = true;
//config.extraPlugins='onchange'; 
$( document ).ready( function() {
   $( '#editor1' ).ckeditor(); // Use CKEDITOR.replace() if element is <textarea>.
   $( '#editable' ).ckeditor(); // Use CKEDITOR.inline().
   width: "500px"
} );
function setValue() {
    $( '#editor1' ).val( $( 'input#val' ).val() );
}

Tuttavia ho preso questo script dalla documentazione di ckeditor e quindi non saprei comunque come muovermi.
 
CKE è standalone, nel senso che la sua implementazione base non si appoggia a jquery, ma è possibile eseguirlo senza di esso.
Per far funzionare il codice che hai riportato devi caricare tra gli script anche l'adapter per jquery:
HTML:
<script src="ckeditor/adapters/jquery.js"></script>
 
Ultima modifica:
Sì, infatti c'era, ma immagino di averlo dimenticato nel copia e incolla della mia risposta (che tra l'altro qui non vedo)... è forse in moderazione?
 
Risolto!!

Essenzialmente erano due problemi:
il primo era che il seguente codice:
Codice:
success: function(data) {   
    if (!data) {
        alert("  Impossibile salvare!\nContatta il webmaster");
    }
}

non so perché ma fa uscire l'alert anche se la variabile è inviata correttamente e quindi l'ho sostituito con:
Codice:
error: function(result) {
    alert("  Impossibile salvare!\nContatta il webmaster");
}

Il secondo problema dipendeva dal fatto che non avevoi i permessi sul file su cui volevo scrivere.
Una volta variati i permessi sul file tutto ha funzionato.

Anche per quanto riguarda il problema legato all'utilizzo dei plugin dipendeva dalla mancanza di permessi sulle cartelle dei plugin.

Quindi ora tutto ok.

Grazie
 

Discussioni simili