Newsgroup: it.comp.lang.javascript
Titolo: XMLHttpRequest e recupero record multipli

Buongiorno a tutti,
sto pasticciando con l'oggetto XMLHttpRequest e finora sono riuscito a
recuperare record singoli da un database, passati come plain text o come
xml. Diciamo che tramite un form cerco un determinato codice e uno
script in php piglia il parametro, eseque una query su un db MySQL e
restituisce il risultato.
Fin qui tutto bene...
A questo punto vorrei complicare un po' le cose...
Senza arrivare a Google Suggest, mi piacerebbe realizzare un qualcosa
che, con l'inserimento di parametri multipli, affini man mano i
risultati.
Per i parametri multipli non credo dovrebbero esserci grosse difficolta'
di gestione, ma mi sto interrogando sul modo migliore di "trasmettere" i
dati da parte dello script in php.
Nel recupero di un solo record passavo semplicemente un testo
intervallato da virgole (nome,descrizione), splittavo il tutto in un
array e lo presentavo in due campi di testo.
Stessa zuppa con l'XML
(<result><nome>nome</nome><descr>descrizione</descr></result>)
Ora mi trovo a gestire una quantita' di record indefinita e, per partire
col piede giusto, mi farebbe piacere ricevere qualche parere su quale
metodo utilizzare per trasmettere i dati alla pagina che ne fa
richiesta.
Meglio il plain text intervallando i record con qualche carattere
particolare, l'XML o c'è altro?
Thanks!  : )
-- 
Mr. Fix @ home

 dati da parte dello script in php.
dai un'occhiata a 
http://www.json.org

Mr. Fix ha scritto:

Non c'ho capito na mazza!
Himgi




 
dai un'occhiata a 
http://script.aculo.us
molti esempi sono dei veri e propri tutorial
-- 
una volta qui era tutto <table>

 molti esempi sono dei veri e propri tutorial
Uhm... Ho visto le pagine demo dedicate all'autocompletion (praticamente
google suggest) pero', se non ho capito male, qui si parla di
RubyOnRails, roba che non ho mai avuto il tempo di considerare... : /
Oltretutto mi pare che 'sto ambaradan sia pure troppo ridondante per le
mie necessita'...
Forse mi sono spiegato male, a me bastava capire se era possibile
passare un dato diverso da un plain text.
- dalla pagina html spedisco un criterio di ricerca
- una pagina php piglia il parametro, effettua la ricerca nel db e trova
(ad es.) 10 records corrispondenti.
A questo punto, questi 10 records, in che formato li passo alla pagina
che ha effettuato la ricerca? Oltre al plain text (formattato come xml,
come csv e cosi' via) c'e' un modo di "impacchettare" la mole di dati
risultante, spedirla e "spacchettarla" dall'altra parte?
Un'alternativa potrebbe essere quello di restituire un riferimento al
gruppo di record trovato, e poi gestirlo direttamente nella pagina che
ne ha fatto richiesta, ma non credo sia possibile... o no?  ^_^
Hem... Mi sto incasinando sempre di piu'...  : )


 risultante, spedirla e "spacchettarla" dall'altra parte?
quando chiami quella pagina php ottieni un puntatore a una risorsa DOM (a
patto che l'xml generato sia corretto) 
se preferisci un esempio fatto a mano dimmelo che te ne posto uno dei miei.
ciao


 dai un'occhiata a 
http://www.json.org
Uhm... Interessante... Se non ho capito male pero' si tratta sempre di
inviare un testo formattato in un certo modo ed utilizzare poi una serie
di metodi per gestire i dati formattati, giusto?
Se cosi' fosse l'unico vantaggio sarebbe quello di avere i dati
trasmessi ordinati e di avere gia' dei metodi per gestirli.
Ma, nel caso avessi come dati risultanti 5 records contenenti 3 campi
ognuno (cod, name, descr), come dovrei formattarli? Come un oggetto json
contenente 5 array o come 5 oggetti con determinate proprieta'?


 ecco, questo č lo schema xml che utilizzo io
Uhm... A parte il fatto che i tag sono piu' compatti non vedo molta
differenza dall'xml che avevo indicato nel mio primo messaggio
(<result><name>nome</name><descr>descrizione</descr></result>), generato
dinamicamente scorrendo i vari records e con l'intestazione giusta.
In pratica potrei restituire come risultato un testo formattato in xml
tipo questo: 
<?xml version="1.0"
standalone="yes"?><record><id>1</id><name>pippo</name><descr>Amico di
Topolino</descr></record><record><id>2</id><name>topolino</name><descr>A
mico di Pippo</descr></record>
e poi potrei navigare l'albero xml, recuperare i dati e mostrarli a
video in un div, se non sto scrivendo una scemenza... ^_^
Giusto per non perdere tempo cercando di sviluppare qualcosa nel modo
sbagliato, mi chiedevo se utilizzare l'xml fosse la cosa migliore o ci
fosse altro (tipo gli oggetti json che mi hanno indicato in un altro
post)


 post)
Mi aggancio qui, giusto per capire se davvero  mi sto perdendo in un
bicchier d'acqua...
Da php recupero i dati e li formatto in html con tag e tutto il resto,
restituisco il tutto e metto il risultato in un div.
Niente xml, niente json, solo puro html (la porzione che mi interessa,
senza header o altro).
Boh, funziona... ^_^
Davvero, pensavo fosse piu' complicato e che si dovessero passare i dati
in qualche formato/modo particolare.
C'e' qualche controindicazione nel restituire un pezzullo di codice html
al posto di xml o json?


 richiesta.
Non c'è un metodo più corretto in assoluto. Dipende tutto dal lavoro che si
deve svolgere. "The right tool for the right job".
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,
la voglio catturata e fucilata."

 video in un div, se non sto scrivendo una scemenza... ^_^
No, non stai scrivendo una scemenza, il punto è che se il tuo scopo è
visualizzare il tutto in DIV, ed è solo questo ciò che devi fare con tali
dati, non è performante.
Le DOM API sono lente. Sia quelle HTML che XML.
Soprattutto se la mole di dati potrebbe essere notevole, ti conviene
utilizzare direttamente innerHTML che, sebbene sia solo uno standard de
facto, è innegabilmente più veloce per questo genere di operazioni.


 in qualche formato/modo particolare.
No, XMLHttpRequest non č altro che un mezzo per veicolare richieste http.
Il formato di richiesta e risposta viene definito dal client e dal server,
quindi puoi benissimo inviare XML, cosě come plain text, HTML o
quant'altro.
-- 
"Se c'č qualcosa di piů importante del mio ego su questa nave,


 deve svolgere. "The right tool for the right job".
Puro Vangelo!  : )


 quant'altro.
Si, si, sono io che sono un pirla e mi facevo tutti i miei bei
ragionamenti senza essermi andato a cercare i metodi dell'oggetto... : /
O io sono orbo oppure nel libro Javascript La Guida (v. 1.5) di Flanagan
non ce n'è traccia...


 non ce n'è traccia...
No anche perchè il Flanagan è del 2001 e l'idea iniziale del 2000
probabilmente non ha fatto in tempo ecc ecc. Comunque son finito proprio
ieri sul sito di Flanagan ed è praticamente uscita la 5a edizione che
copre anche AJAX:
http://www.davidflanagan.com/javascript5/
-- 
Lawrence - 
http://www.oluyede.org/blog
"Nothing is more dangerous than an idea
if it's the only one you have" - E. A. Chartier

 
http://www.davidflanagan.com/javascript5/
Ach... Dici che mi ritirano indietro il vuoto (il vecchio) in cambio del
nuovo?  : )
Sarebbe bello pero'...


 Sarebbe bello pero'...
Bellissimo. Avrei una mezza quintalata di Java 2, 1.3, 1.4 etc. da
rottamare. :)
-- 
"We're just two lost souls swimming in a fish bowl -
year after year"


i dati vengono recuperati dal server in questo formato semplicissimo:
87.10.161.131:h
ost131-161.pool8710.interbusiness.it:769
61.247.249.224:d
sl-TN-224.249.247.61.touchtelindia.net:187
82.59.133.100:h
ost100-133.pool8259.interbusiness.it:59
87.11.160.148:h
ost148-160.pool8711.interbusiness.it:21
...
sono tuple separate dai due punti perche' e' un carattere non valido per i
campi. Il codice le splitta in righe e poi li separa in campi.
(attenzione: non e' cross-browser, perche' non mi serviva che lo fosse)


 poi sbagliare nuovamente ecc...
Il problema non si pone, leggi quel che ti ha scritto Claudio.
Nell' onkeyup imposti il timeout (setTimeout) che avvia la funzione di
recupero risultati; ovviamente controllando che non sia già attivo
(setTimeout restituisce un identificativo del timeout impostato), in tal
caso lo elimini (clearTimeout) e ne reimposti uno nuovo.
Nel caso in cui le ricerche non abbia senso con meno di un tot caratteri
(vedasi uno o due), fai anche quel tipo di controllo.
Di per sé è molto semplice, l'unico "fastidio" è dato da Internet Explorer
che, se ben ricordo, non gestisce nell'onkeyup il backspace. Dovrai, in tal
caso, appoggiarti anche all'event handler onkeypress.


 non ce n'è traccia...
Non saprei, personalmente ci sono ben pochi libri cartacei che valgono la
pena, in informatica.
Per Javascript poi, data la sua particolare natura, non ho mai visto un
"must have".
Inoltre, XMLHttpRequest di suo non è propriamente Javascript.
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,


 copre anche AJAX:
Brrr. Per favore. Ho lodato l'utente per il subject che ha scritto, non
portarmelo sulla via del "lato oscuro dell'XMLHttpRequest"... è così raro
trovare una persona al giorno d'oggi che non usa il termine "AJAX" anche
per condire la pasta... :)
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,


 per condire la pasta... :)
Boh io AJAX non l'ho ancora usato, non direttamente :-)


 Boh io AJAX non l'ho ancora usato, non direttamente :-)
"AJAX" non lo usi. :) Se vuoi info maggiori a riguardo, sono stati scritti
godziliardi di post nel NG; ma essenzialmente puoi considerare l'acronimo
"AJAX" come l'erede del DHTML, sia nel concetto che nella pratica.
-- 
"Se c'č qualcosa di piů importante del mio ego su questa nave,


 "AJAX" come l'erede del DHTML, sia nel concetto che nella pratica.
Si si so cosa significa, quello che intendevo è che sto usando un
framework che lo astrae decisamente su cui è scritta l'applicazione che
sto sistemando, quindi AJAX (o il nome che vuoi) lo uso ma non


 Si si so cosa significa, 
Allora se lo sai, dovresti anche sapere che dire "uso AJAX" non ha molto
senso. Tutto qua. :)
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,


 senso. Tutto qua. :)
Perchè non ha senso? AJAX è un termine markettaro che condensa una serie
di tecnologie preesistenti. Posso dire uso HTML? CSS? Javascript? DOM?
XmlHTTPRequest? Perchè non posso dire uso AJAX? Mi sfugge. Certo per
essere più corretto dovrei dire "nella mia applicazione mi avvalgo di
tecnologie quali AJAX, blah blah" ma mi sembra un pò troppo formale


 tecnologie quali AJAX, 
Appunto qui sta l'errore. AJAX *non* è una tecnologia.
Come ti ho già detto, sono già state spesi fiumi di parole in merito a 
questo argomento, vorrei evitare di ripeterle. Non solo per me, ma anche 
per chi se le è già sorbite proprio in questa sede. :)
Se vuoi approfondire, ti consiglio di dare un'occhiata agli archivi del NG.
Concludo riportando il tutto al discorso iniziale: L'OP ha posto 
correttamente la questione circa la sua problematica, evitando l'uso 
generico del termine "AJAX", il che di questi tempi è davvero raro e l'ho 
davvero apprezzato. :)
Per una volta che succede questo, mi si è stretto un po' il cuore vedendo 
che qualcun'altro lo tirava in ballo. :D


 che qualcun'altro lo tirava in ballo. :D
Boh io me ne frego ;-)


 per condire la pasta... :)
LOL, ho letto diversi post a riguardo ed effettivamente parlare di AJAX
credo abbia senso solo in particolari ambiti d'uso (quando viene
utilizzato javascript con chiamate asincrone ed utilizzando xml per lo
scambio dati).
Per il resto non mi pare adeguato utilizzare quel termine, per quello
non l'ho utilizzato...  ^_^


 Inoltre, XMLHttpRequest di suo non è propriamente Javascript.
Gia'... "Deriva" da un oggetto ActiveX di Microsoft se la memoria non mi
inganna (so che potrei googlare ma sono di corsa... : )


 facto, è innegabilmente più veloce per questo genere di operazioni.
Alla fine ho fatto proprio così, diciamo che ci sono arrivato
empiricamente... : )


 minima (ad es. 3 caratteri).
Rispondo qui a te e a ZER0, vi ringrazio per i suggerimenti, li tengo
buoni per ogni evenienza... ^_^


 inganna (so che potrei googlare ma sono di corsa... : )
E' giusto.


 Boh io me ne frego ;-)
L'ho visto ;) Ma personalmente no. Spero tu mi capisca :)
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 non l'ho utilizzato...  ^_^
Una pacca sulla spalla non te la leva nessuno, bravo :)


 inganna (so che potrei googlare ma sono di corsa... : )
Mi riferivo al fatto che XMLHttpRequest non fa parte del core di javascript,
e quando si parla di "linguaggio javascript" si dovrebbe escludere tutto ciò
che è introdotto dall'enviroment (browser, nel nostro caso), a voler essere
precisi :)
Cmq si, XMLHttpRequest fu introdotto per la prima volta da Microsoft, come
oggetto ActiveX (del resto, tutto in IE è un ActiveXObject).


 empiricamente... : )
Se ti interessa in giro trovi anche delle tabelle comparative:
 
http://www.quirksmode.org/dom/innerhtml.html


 precisi :)
Eh, vabbe', ma lei mi è troooooppo preciso!  : )
(dote rara vista l'approssimazione che regna sovrana... A me di solito
danno del "paranoico"...  -_o)


       
http://www.quirksmode.org/dom/innerhtml.html
Interessante, thanks!  : )


 L'ho visto ;) Ma personalmente no. Spero tu mi capisca :)
Benissimo


 precisi :)
Per questo io appena finito di leggere la prima parte del Flanagan son
venuto su questo NG a chiedere se si potesse usare JS al di fuori del
browser :)
