Curiosità: ajax - php - js postato il 23/11/2009 18:47:27 nel forum programmazione, gdrcd e open source e modificato da tdl - staff il 23/11/2009 18:47:49
Ciao!
Avete mai dovuto utilizzare del javascript, non solo funzioni base ma anche funzioni avanzate incluse in un src, dopo aver fatto una chiamata ajax ad una pagina php?
Se si, in che modo? Ad esclusione del metodo eval usato nella stringa di risposta della funzione ajax e il parse di tutti i tag script quali altre possibilità, un pò più professionali ci sono?
Avete degli esempi validi?
grazie, a tutti.
Pagine → 1
23/11/2009 19:33:42
io utilizzo ajax, ma mi appoggio al framework di jquery.
Genericamente invio e ricevo dalle pagine php dei dati in formato JSON perchè mi trovo più comodo.
Nel caso di dubbi sulle destinazioni future d'uso puoi utilizzare xml come formato di interscambio, ma se le pagine sono a destinazione certa html e js puoi usare json tranquillamente.
24/11/2009 16:03:18
Non so dove ho risposta sta mattina :V forse ero troppo addormentato e non ho cliccato invia... cmq riscrivo.
Ho capito, grazie.
Sinceramente io ho provato, questa mattina, ad usare il javascript framework Prototype (prototype.js) mi pare lui stesso faccia uso della funzione eval per valutare le espressioni javascript. So che viene usato in diversi progetti, questo framework, come ad esempio tickbox o script.aculo.us (nn è una parolaccia è proprio scritto così).
Cmq sta di fatto che non riesco a capire come uscire da questo problema. Usando prototype nn riesco a serializare le variabili di un form tramite la funzione $('nomeform').serialize, praticamente nn passa un tubo, quindi la response ajax è vuota. Non posso usare file di appoggio quali csv, txt, bla, perchè devo fare tutto "onthefly" senza scrivere sul disco.
Altra cosa che non spiego è perchè con un semplice uso semplice del javascript ***** (vedi sotto) non riesca a vedere i parametri postati dall'altra parte.
*****
24/11/2009 16:07:13
ti sconsiglio prototype che lo stanno abbandonando, passa a jquery che è similare e più leggero.
il serialize se non te l'ha preso vuol dire che devi aver cannato il riferimento al form.
se ricordo ancora abbastanza bene quella sintassi se usi la dicitura
$('') tra gli apici devi passargli l'id del form, se vuoi utilizzare invece genericamente dei selettori css (ma non ne vedo il motivo) devi utilizzare un $$(''), ma ricordati che in quel caso stai accedendo a un array di oggetti quindi il serialize non ti funziona se lo piazzi secco come funzione.
in ogni caso il serialize è con le () se non ricordo male.
se hai dubbi chiedimi pure l'msn privatamente, in ogni caso butta proto e passa a jquery.
24/11/2009 16:24:13
Guarda findati le ho provate tutte per il serialize, seguendo il tutorial di prototypejs.org (nella sezione apposita).
In realtà $ serve per fare riferimento ad un qualsiasi oggetto con id nella pagina. $$ è per i css come hai detto tu e poi c'è $F che dovrebbe essere per i form cmq... ripeto, le ho provate tutte secondo me è un pò buggato.
Per jquery stavo provando a guardarlo ora purtroppo mi sembra molto macchinoso. Non escludo sia migliore ma ...
24/11/2009 16:54:48
mah oddio se hai capito prototype è più o meno la stessa solfa.
non cambia moltissimo.
prototype non dovrebbe essere buggato cmq.
finchè l'ho usato non ha mai fallito un colpo e non l'ho usato poco, ma massivamente quando ho dovuto.
secondo me sbagli qualcosa anche se non so cosa.
25/11/2009 11:26:58
Si, molto probabile.
Per quanto riguarda jquery... ma ogni cosa è associata ad un evento? mi spiego: in prototype per fare getElementById(' basta che faccio $('
mentre in jquery sembrerebbe basti fare $('# ossia in più c'è il cancelletto. Tuttavia se io lo uso allo stesso modo di prototype mi da un errore fatal exception in firebug.
Quindi ho guardato un pò la documentazione e ho visto che comunque in jquery tutto è associato ad un qualche evento del tipo .click, .ready, .get, e così via.
Quindi poi la sintassi corretta dovrebbe essere $('#...').get(0) il chè mi sembra più macchinoso di prototype. Poi boh magari sbaglio io, eh, è solo da ieri che lo suo.
25/11/2009 14:52:37
no, ci sono i listener ovviamente come click, mouseover ecc ecc, ma tu puoi direttamente accedere e usare tutto senza associarne.
La differenza con prototype è che la chiamata $() cerca l'id di riferimento e lo usa mentre in jquery lui carica l'oggetto in un'array come fa prototype quando usi $$().
la differenza fondamentale (e comoda) è che non esistedo questa differenza in jquery tu non devi castare direttamente o indirettamente i vari casi usando funzioni dirette o invoke a seconda, ma tutto è fatto per essere eseguito lungo tutto l'array di oggetti.
quindi mentre in prototype tu avresti un
$('mioid').show()
e
$$('.mieclassi').invoke('show');
in jquery avresti sempre:
$('#mioid').show()
$('.mieclassi').show()
$('div p.mieclassi').show()
e così via
in jquery lui usa la notazione # perchè anche con la dicitura $() di fatto lui guarda sempre ai selector css e non all'equivalente di un document.getElementById come farebbe prototype.
26/11/2009 13:33:11
Uhm, okay.
Però ti faccio un esempio con una funzione di google maps.
Codice con Prototype:
26/11/2009 14:19:20
corretto.
come ti ho detto sopra lui carica sempre in un array gli oggetti.
Quindi anche se cerchiamo un id che sappiamo essere unico per ovvi motivi, lui carica il singolo oggetto dentro un array in ogni caso.
è una cosa per certi versi stupida applicata al tuo attuale esempio e che ti costringe a usare il get, ma in altre casistiche risulta semplificante e ti fa risparmiare molto più codice che con l'approccio prototype.
essendo un array tu potresti anche dire
$('#mioid')[0];
26/11/2009 14:32:41 e modificato da tdl - staff il 26/11/2009 16:08:50
muchas gracias :-D
EDIT: adesso ci sto prendendo la mano... e lo sto usando insieme a jquery ui... ammetto che rompe il culo! xD (passatemi il termine plz)
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
agirlhasnoname ha risposto alla discussione: Perché non avete più voglia di giocare?