Newsgroup: it.comp.lang.javascript
Titolo: Chiamate sincrone (e non solo) senza XmlHttpRequest

Ciao a tutti,
    come ho postato un paio di giorni fa, mi sto realizzando un oggetto
sostitutivo di XmlHttpRequest, in grado di rispondere alle chiamate tipiche
di XmlHttpRequest (così da ridurre all'osso il codice ridondante).
Ero partito con la creazione di un JsHttpRequest che funzionava egregiamente
con le chiamate asincrone GET, ogni volta inserivo un file .js.php a cui
passavo, nella querystring, ciò che mi serviva (un solo parametro) e mi
portava indietro responseText. Tutto a posto, salvo poi scoprire che
l'applicazione a cui si stava lavorando necessita di gestire (anche)
chiamate POST. E così tutto da rifare: mi son creato un nuovo oggetto,
denominato HttpRequest che inserisce un <iframe> nella pagina: se la
chiamata è GET passa semplicemente i parametri nella querystring
dell'attributo "src", altrimenti (=POST) splitta i parametri inseriti in
send() e crea un <form> (con tanti <input> quanti parametri inseriti), il
quale inoltra la chiamata all'<iframe>.
Sembrerebbe funzionare abbastanza egregiamente, anche se ho un paio di
dubbi:
1 - il primo, il più utile: come è possibile limitare l'utilizzo di
HttpRequest in base alle capacità del browser? Ovvero come applicare al
meglio gli object checking per far sì che i browser che non hanno
XmlHttpRequest, usino il mio HttpRequest solo se sono in grado di
utilizzarlo?
2 - il secondo: ormai che ci sono, si potrebbe creare un vero sostituto di
XmlHttpRequest, da utilizzare appunto quando è impossibile richiamarlo (io
me lo sono creato per gestire IE senza ActiveX, credo però che lavorandoci
meglio si possa estendere la compatibilità a browser più "vetusti").
Dovrebbe quindi essere capace di gestire le chiamate sincrone, cosa che mi
suona un po' complessa... come poter lasciare il browser "appeso" sino al
ritorno della richiesta? Stavo pensando a un window.showModalDialog che
riportasse il responseText, ma il corrispettivo di FF (l'attributo modal di
widow.open) non funziona alla stessa maniera e comunque, sarebbe una
soluzione troppo invasiva. Per un secondo mi è corso il brivido del while(),
ma è stato appunto un secondo :)
Per fare i miei test mi sono creato due pagine, che gestiscono le chiamate
asincrone POST e GET:
http://www.xmlhttprequest.it/without_xmlhttprequest/iframe/async_post.htm
http://www.xmlhttprequest.it/without_xmlhttprequest/iframe/async_get.htm
L'oggetto in sé, è reperibile su:
http://www.xmlhttprequest.it/without_xmlhttprequest/iframe/HttpRequest.js
.
Il codice mi sembra abbastanza auto-esplicativo (non ho messo commenti, ma
non vorrei sembrare troppo Sam Stephenson).
Ho cercato di restare più vicino possibile al normale funzionamento di
XmlHttpRequest. E' migliorabile, ma un buon punto di partenza, spero! :)
In conclusione, cosa ve ne pare? Avete qualche idea per i due dubbi che ho
postato?
Ro!

 di XmlHttpRequest (così da ridurre all'osso il codice ridondante).
[CUT]
Hai dato una occhiata al mitico Brent Ashley? magari trovi qualche dritta:
 
http://www.ashleyit.com/rs/
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

  
http://www.ashleyit.com/rs/
Ti rispondo al volo prima di scappare a pranzo che sono in ritardissimo,
intanto ti ringrazio per la risposta :)
E' molto interessante che usi insertAdjacentHTML, è una possibilità che
avevo pensato, scartandola poi per la difficoltà di gestire al meglio i vari
casi (insertAdjacentHTML, appendChild ecc.). Ashley usa un browser sniffing
che preferirei evitare, BTW l'url che mi hai passato mi chiarirà alcune idee
per espanderne la compatibilità.
Resta però il problema della chiamata sincrona, ovvero come lasciare il
browser appeso (=in attesa) tra il xmlhttp.send() e il xmlhttp.responseText,
senza che quest'ultimo dia undefined solo perché la risposta non è ancora
arrivata. Altre idee?
Grazie ancora.
Ro!

 arrivata. Altre idee?
temo non vi siano soluzioni.
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 postato?
Preferisco glissare, non sono un amante di questo genere di cose. Il link che
ti ha passato Cristiano ti sarà utile quantomeno per degli spunti, se vuoi.
-- 
- Vuoi tu questo corpo?
- E' una domanda trabocchetto?

 ti ha passato Cristiano ti sarà utile quantomeno per degli spunti, se
vuoi.
A me non dispiace l'argomento in sé, ma non è per studio che la scrivo,
anche se poi il suo funzionamento che sostituisce, quanto più possibile
XmlHttpRequest è più studio che reale necessità, dato che potrei fare il
doppio codice. E soprattutto non mi interessano le chiamate sincrone... ma
in fondo ogni occasione è buona per approfondire e quindi, eccomi qui a
scrivere per scoprire se c'era un modo per simularle.
Ro!

> temo non vi siano soluzioni.
Inizio a temere anche io... in fondo il reale vantaggio di XmlHttpRequest è
la chiamata sincrona, non replicabile (a quanto sappiamo) senza
quest'oggetto.
Ro!

 E soprattutto non mi interessano le chiamate sincrone...
Anche perché cmq non potresti realmente farle.
