2013-01-03 6 views
6

Ho una chiamata ajax a una pagina php in cui passo un ID utilizzando GET.Devo includere nuovamente gli script PHP in una pagina PHP caricata con Ajax?

<script> 
$("#oid").change(function(){ 
    var oid = $(this).val(); 
    alert(oid); 
    $.ajax({ 
     type: "GET", 
     url: "tabela_reservas.php", 
     data: "oid="+oid, 
     success: function(html) { 
      $("#tabela_reservas").html(html); 
     } 
    }); 
}); 
</script> 

Funziona, tranne che PHP mi dà un errore:

Fatal error: Class 'Reserva' not found in C:\xampp\htdocs\kwagenda\tabela_reservas.php on line 20

Se includo i miei file di classe nella "tabela_reservas.php" funziona. Ma questi file di classe sono già caricati/inclusi nel mio "index.php" da dove sto chiamando questa pagina ajax.

La mia domanda è: devo includere nuovamente il mio file di classe php su "tabela_reservas.php" oppure esiste un altro modo per farlo?

Chiedo questo perché, per me, non sembra essere una soluzione molto elegante, e sembra un sovraccarico, dal momento che caricherò due volte la stessa cosa sulla mia pagina.

È questa la cosa giusta da fare o c'è un altro modo per farlo?

Grazie!

+0

Prova a visitare direttamente il tuo tabela_reservas.php, riceverai lo stesso errore. Quindi devi rendere la tua pagina funzionante, prima di chiamare con AJAX. – Termis

risposta

4

Quando si effettua una richiesta Ajax al server, questa è una richiesta completamente nuova, proprio come la navigazione in un'altra pagina.

Quindi sì, è necessario includere di nuovo tutto.

Si dovrebbe esaminare l'autoloading delle classi per una soluzione più elegante per includere le classi.

+0

Grazie! E 'stato molto utile. – TiagoRL

3

È necessario includere nuovamente tutti i file di classe nello tabela_reservas.php in quanto non vi è alcuna relazione tra index.php e tabela_reservas.php.

Tutte le richieste Ajax sono completamente nuove senza alcuna relazione con la pagina corrente (chiamante). Considerare quelli come una nuova pagina viene chiamato :)

3

Una chiamata AJAX significa: Stai chiamando una nuova pagina. Non importa da dove arriva la chiamata, è come chiamare la nuova pagina in background.

Come tale viene analizzato di nuovo, proprio come sarebbe analizzato se un browser l'ha acceduto.

Quindi sì: è necessario includere tutti gli script richiesti in qualsiasi script chiamato tramite AJAX.

0

È necessario disporre di un'altra istanza di questa classe di utilizzo in un altro script. Un altro modo per farlo sarebbe utilizzare il caricamento automatico di PHP/caricamento magico (Vedi: PHP: Autoloading)