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

    Ajax - Anteprima automatica form

    Buongiorno

    Dunque, sto facendo uno script per un forum.
    In pratica voglio che scrivendo nella textarea il contenuto venga automaticamente visualizzato codificato in html in un DIV esterno.

    codice:
    <textarea id="textarea" class="form" cols="70" rows="10" 
    onKeyUp="formatta()">Testo del tuo intervento</textarea>
    
    <div id="anteprima" class="form">Testo del tuo intervento</div>
    nella textarea ho messo onKeyUp="formatta()"

    codice:
    function formatta()
    {
    
    	testo = document.getElementById('textarea').value;
    	
    	if(testo != "")
    	{
    
    	http.open("GET", "_includes/funzioni_ajax.php?azione=formatta_testo&testo=" + testo, true);
    	http.onreadystatechange = updateAnteprima; 
    	http.send(null);
    		
    	}
    
    }
    
    
    
    function updateAnteprima(Form){
    		
     if (http.readyState == 4) { 
             messaggio = http.responseText;
             document.getElementById('anteprima').innerHTML = messaggio;
    	}
    
    }

    mentre in 'funzioni_ajax.php' viene chiamata una funzione che codifica il testo da BBCode a HTML


    il problema è che di tanto in tanto, mentre scrivo, viene visualizzato questo errore:

    Errore: uncaught exception: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: ..... ]

    Non sono sicuro, ma credo dipenda dal fatto che vengano inviate troppe richieste - in fondo ne viene chiamata una ad ogni battuta - quindi mi chiedo: come posso risolvere?
    Ovviamente il problema non si verifica se scrivo molto piano

    saluti
    Avatar
    -------------------

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    scusa ma vale la pena fare una chiamata ajax per ogni tasto premuto? povero server!

    in 'funzioni_ajax.php' ci saranno un po' di regexp che potresti tranquillamente tradurre in javascript e risolvere tutto lato client...

  3. #3
    Ma a cosa ti serve ajax? Perchè questo passaggio inutile? Puoi semplicemente prendere il value della textarea e settare l'innerHTML del div.

    EDIT: Xinod mi ha preceduto...

  4. #4
    eh.. mea culpa..

    non sapendo usare molto JS ho pensato di sfruttare le funzioni in PHP che ho

    insomma, non sapendo come far tradurre il BBCode in HTML attraverso JS ho pensato di farlo fare a PHP.. e l'unico modo che conoscvo era attraverso Ajax..

    a quanto pare devo proprio farmelo dire che sono un cretino.. XD



    dovrò cercare qualcosa in giro, ma alla fine le espressioni regolari sono universali..cambierà solo la funzione per usarle a seconda del linguaggio..
    Avatar
    -------------------

  5. #5
    Originariamente inviato da -[ Av4tar ]-
    alla fine le espressioni regolari sono universali..cambierà solo la funzione per usarle a seconda del linguaggio..
    non è proprio così ... ogni linguagio ha la sua sintassi ed i suoi limiti o le sue features riguardo le regexp.

    JS è abbastanza potente ma non ha tutte le caratteristiche suportate dal php ed alcuni caratteri sono diversi ... esempio:

    [[:space:]] è \s ... fine

    Ajax non va assolutamente usato in questo modo ... Ajax deve fare pochissime chiamate al server, non una ogni tasto premuto ne una ogni secondo ... o invece di aumentare le potenzialità del sito, si ammazza il server di sovraccarico, si butta via banda etc etc ... quindi come ti hanno detto fai tutto via JS
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.