2013-01-03 5 views
6

Ich habe einen AJAX-Aufruf an eine PHP-Seite, in der ich eine ID mit GET übergeben.Muss ich PHP-Skripte erneut in eine Ajax-geladene PHP-Seite einfügen?

<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> 

Es funktioniert, mit der Ausnahme, dass PHP mir einen Fehler gibt:

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

Wenn ich meine Klassendateien im "tabela_reservas.php" es funktioniert umfassen. Aber diese Class-Dateien sind bereits in meiner "index.php" von wo ich diese Ajax-Seite aufrufen geladen/enthalten.

Meine Frage ist: Muss ich meine PHP-Class-Datei wieder auf "tabela_reservas.php" hinzufügen oder gibt es eine andere Möglichkeit, es zu tun?

Ich frage dies, weil es für mich scheint nicht eine sehr elegante Lösung, und es sieht aus wie ein Overhead, da ich zweimal das gleiche Ding auf meiner Seite laden werde.

Ist dies das Richtige oder gibt es einen anderen Weg, dies zu tun?

Danke!

+0

Versuchen Sie, Ihre tabela_reservas.php direkt zu besuchen, Sie erhalten den gleichen Fehler auch. Sie müssen also sicherstellen, dass Ihre Seite funktioniert, bevor Sie mit AJAX telefonieren. – Termis

Antwort

4

Wenn Sie eine Ajax-Anfrage an den Server richten, ist dies eine völlig neue Anfrage, genau wie das Navigieren zu einer anderen Seite.

Also ja, Sie müssen alles wieder aufnehmen.

Sie sollten in Autoloading von Klassen für eine elegantere Lösung zum Einschließen von Klassen aussehen.

+0

Danke! Das war sehr hilfreich. – TiagoRL

3

Sie müssen alle Klassendateien erneut in die tabela_reservas.php einfügen, da es keine Beziehung zwischen index.php und tabela_reservas.php gibt.

Alle Ajax-Anfragen sind komplett neu ohne irgendeine Beziehung zur aktuellen (Aufrufer-) Seite. Betrachten Sie diese als eine neue Seite, die heißt :)

3

Ein AJAX-Aufruf bedeutet: Sie rufen eine neue Seite an. Es spielt keine Rolle, woher der Anruf kam, es ist, als würde man die neue Seite im Hintergrund aufrufen.

Als solche wird es neu geparst, genauso wie es geparst würde, wenn ein Browser darauf zugreifen würde.

Also ja: Sie müssen alle erforderlichen Skripte in jedem Skript enthalten, das Sie über AJAX aufrufen.

0

Sie müssen eine andere Instanz dieser Klasse von Ihnen in einem anderen Skript verwenden. Eine andere Möglichkeit wäre das Verwenden von PHPs autoloading/magic loading (Siehe: PHP: Autoloading)

Verwandte Themen