[Linuxtrent] Re: [ot] impazzire con AJAX e javascript

  • From: Mario <alexmario@xxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sat, 3 Dec 2005 16:58:41 +0100

Andrea Rossato wrote:
> 
> 
> la mia idea era di fare cosí:
> 
> var pageData = new Object();
> var url = 'http://localhost/wakka/HomePage/ajax.xml';
> var pars = 'action=getPage';
> var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, 
> onComplete: parseResponse} );
> function parseResponse(originalRequest)
>     {
>         pageData.body = 
>
originalRequest.responseXML.getElementsByTagName("page")[0].firstChild.nodeValue);

> 
>         pagaData.id = 
>
originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);

> 
>     
>     }
> 
> per poi accedervi da pageData.id o pageData.body, che, ovviamente, mi 
> tornano undefined...
> 

Il probema è quando accedi a pageData, appunto.
Prova a settare un valore di default.
Ad esempio :

var pageDate = new Object();
pageData.body = 'NO_BODY';
pageData.id = 'NO_ID';

In questo modo puoi capire se il valore non è cambiato oppure se viene
cambiato nel frattempo o se addirittura utilizzi un altra variabile (ad
esempio locale).

Comunque dovrei vedere anche il resto del codice per capire come
utilizzi i valori.

> alludevi ad un approccio del genere? o cos'altro?
>

Alludevo ad un approccio ad oggetti per quanto riguarda il tuo codice,
nel senso di progettarlo con le classi.

In sostanza farei :  

function getEditorObject() {

    if(!this.editor) this.editor = new myEditor(options);

    return this.editor;

}

function myEditor() {

        this.pageData = undefined;
        this.pageId   = undefined;
        this.url      = 'url';
        this.myAjax   = new Ajax.Request( url, {method: 'get',
parameters: pars, onComplete: getEditorObject() + '.parseResponse'} );
        
        this.parseResponse = function(originalReques) {
              
               this.pageData.body
originalRequest.responseXML.getElementsByTagName("page")[0].firstChild.nodeValue);

               this.pagaData.id =
originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);

        }

        ....
        ....
}


Poi ci aggiungi il resto del codice e alla fine istanzi un oggetto per
usare l'editor :

var e = getEditorObject();

e.draw();


> inoltre... mi sono fatto fregare, un'altra volta! dunque: non avevo 
> ancora iniziato a sviluppare un editor ajax per il mio wiki per via del 
> fatto che esso è servito come application/xhtml+xml, il che fa lavorare 
> i browser con il dom XML, per il quale non esiste innerHTML, largamente 
> usato in tutte le librerie ajax.
> l'altro giorno avevo trovato un editor[1] che pareva funzionare con il 
> dom xml. ma ora mi accorgo che dipende solo dal fatto che sto usando 
> firefox-1.5, che deve aver adottato l'approccio di opera e permette ora 
> di usare innerHTML....[2] che casino.
> 

In realtà non dovresti aver problemi ad utilizzare innerHTML, solo che
devi fare attenzione con IE, il quale ha qualche difficoltà in merito.

innerHTML non contiene altro che un ramo/albero DOM in formato stringa.

Che problemi hai riscontrato?

Hai provato : http://kupu.oscom.org/

E' l'editor utilizzato da plone.


> francamente mi domando cosa possa succedere ali standard se tutta sta 
> bella roba ajax comincerà a proliferare...
> ad ogni buon conto ora non so bene che fare....
> 

Tempo fa ho visto un articolo che trattava l'argomento.
La voglia di utilizzare questi strumenti è tanta, molta di più di quella
di mettersi a tavolino a realizzare uno standard.

> ciao e grazie per l'attenzione.
> andrea
> 
> [1] http://www.wikiwyg.net/
> [2] https://bugzilla.mozilla.org/show_bug.cgi?id=155723 e 
> http://www.squarefree.com/burningedge/releases/1.5b1.html

Sì, conoscevo il problema della textarea.
Ma puoi girarci attorno con una input opportunamente modificata.

-- 
Ciao,
  Mario.


----------------------------------------------------
This mail has been sent using Alpikom webmail system
http://www.alpikom.it

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: