![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
Moderatore
|
Ciao ragazzi,
da qualche giorno sbatto la testa per cercare di replicare con PHP una tecnica che di solito uso in asp.NET. Con C# spesso strutturo il codice dividendo la parte di interfaccia utente (html + jquery), dal codice che si frappone tra essa e il database. Faccio questa operazione passando per un web service che contiene tutte le funzioni richiamate da ajax. In pratica la logica di solito è la seguente - La pagina .aspx effettua con jquery una chiamata ajax che chiama uno specifico metodo di un web service (.asmx). - il metodo del web service esegue i controlli, crea le classi che si interfacciano con il db ecc. ed infine risponde (in json o xml) il risultato alla pagina chiamante. Come dicevo all'inizio, è da qualche tempo che mi sono incaponito a voler riprodurre la stessa cosa con PHP. Lo vorrei fare per due motivi: centralizzare in un unico file tutte le funzioni chiamate tramite ajax e perchè sono semplicemente molto curioso di capirci qualcosa. Da uno studio che ho già fatto ho letto di nusoap e librerie del genere per creare web service in php. Quello che non ho provato a fare pechè non capisco bene come farlo, è chiamare uno specifico metodo di un web service creato con php. Ad esempio negli asmx mi basta aggiungere alla fine dell'url nella chiamata ajax uno "/nomeMetodo" e marcare quest'ultimo come [WebMethod] nel .cs associato all'asmx. In php la cosa funzionerebbe alla stessa maniera? Quale sarà il file che in .NET mi corrisponde all'asmx? Ho trovato sul web molto riguardante i web service in php, molto per realizzare questa tecnica con .NET (asmx) e jQuery, ma nulla che integri in un solo esempio/tutorial/articolo jQuery, php e i web service (anche se con librerie diverse da nusoap). Qualcuno di voi saprebbe per caso darmi qualcosa da leggere per approfondire l'argomento? Spero di essermi spiegato decentemente e mi scuso se quel che ho scritto dovesse risultare ostico da capire. Non è facile spiegarsi su questa cosa. Un saluto a tutti Shad |
|
|
|
|
|
|
|
#2 (permalink) |
|
Moderatore
Data di registrazione: May 2008
Ubicazione: Seriate (BG)
Messaggi: 660
|
Ciao Shad, effettivamente non mi è molto chiaro, non capisco di cosa necessiti e perchè.
Ogni volta che devo implementare ajax in qualche software web based in php, faccio così: Creo una classe specifica in PHP (per esempio la chiami ajaxApi class), in modo da prendere in carico tutte le chiamate Ajax. Nella pagina ajax.php, genero l'oggetto della classe precedentemente accennata e in base alla richiesta, effettuo le operazioni. esempio: ajax.php?action=delete&id=34 La classe capisce che deve eseguire l'azione di delete sull'id 34. Fai quello che devi fare in php e generi un'eventuale output (xml, html, pinco pallo). Onestamente non so cosa sia asmx, ma se non ho capito male ha la stessa funzione del file che precedentemente abbiamo chiamato ajax.php. |
|
|
|
|
|
#3 (permalink) | |
|
Moderatore
|
Quote:
grazie per la risposta. Credo che hai inteso il senso di quello che voglio fare anche se volevo cercare di capire come farlo con i web service. Detto questo però il tuo metodo con la classe può tranquillamente sostituire la mia idea nella soluzione del problema. Quello che però vorrei capire nella parte citata è proprio come fai a usare quel "delete". Nel senso che ho capito che bisogna passare l'azione, quello che non mi è chiaro è come faccio ad eseguirla visto che sto passando un parametro (quindi una stringa) e non un metodo inteso come una vera e propria azione. Fammi sapere e grazie ancora per l'aiuto. Shad | |
|
|
|
|
|
#4 (permalink) |
|
Moderatore
Data di registrazione: May 2008
Ubicazione: Seriate (BG)
Messaggi: 660
|
Ok, ti faccio un esempio pratico con tanto di codice di un mio software.
In gioco abbiamo: ajax.php : Pagina che viene chiamata via Ajax. usersControl-class.php : classe che gestisce gli utenti. Crea, modifica, assegna privilegi, cancella, etc... Supponiamo che io mi trovi in un pannello di amministrazione di un'applicazione web based e davanti mi trovo l'elenco dei miei dipendenti (gli utenti). Decido di cancellare l'utente con id 23 e tramite ajax chiamo: ajax.php?request=usersControl&action=delete&id=23 In pratica sto dicendo alla pagina Ajax.php che voglio accedere alla classe userControl ed eseguire l'azione di delete sull'id 23 Ma come fa ajax.php a fare questo? Così: Codice PHP:
La classe userControl, funziona così: Codice PHP:
Puoi tranquillamente inoltre generare qualunque tipo di output. Spero di essere stato abbastanza chiaro. Un saluto |
|
|
|
|
|
#6 (permalink) |
|
Moderatore
|
Ciao Bazarop,
ho usato questa mattinata per studiare con più calma il problema e l'ho risolto con un metodo, a mio modesto parere, davver interessante. Te lo riporto in modo che magari è utile anche a te e ne possiamo discutere insieme. Ho innanzitutto creato un file php che usa una interessantissima funzione di PHP che non conoscevo, call_user_func_array. Ecco il file che ho creato per fare una prova: Codice PHP:
Questo perchè ho creato poi una funzione jQuery che passa il nome della funzione accodato al file php che chiamo e i parametri con il normale metodo. Avrei potuto anche passare tutto tra i parametri ovviamente. Ecco il file js: Codice:
$.ajax({
url: 'ajax/caller.php?f=funzioneProva',
type: 'POST',
data: { p1: 11, p2: 'shad', p3: 'altro testo' },
success: riuscito,
error: fallito
});
Bisogna solo avere l'accortenza di mettere i parametri nell'ordine in cui vogliamo vengano passati alla funzione. Cosa ne pensi? ![]() |
|
|
|
| Tags: jquery ajax, php, web service |
| Strumenti di discussione | |
|
|