2013-01-03 10 views
6

Mam wywołanie ajax do strony php, w której przekazuję identyfikator za pomocą GET.Czy muszę ponownie dołączać skrypty PHP w załadowanej stronie 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> 

To działa, oprócz tego, że PHP daje mi błąd:

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

Gdybym to moje pliki klasa w "tabela_reservas.php" to działa. Ale te pliki klasy są już załadowane/zawarte w moim "index.php" skąd wywołuję tę stronę ajax.

Moje pytanie brzmi: czy muszę ponownie dołączyć mój plik klasy Php do "tabela_reservas.php", czy jest jeszcze inny sposób na zrobienie tego?

Pytam o to, ponieważ wydaje mi się, że nie jest to bardzo eleganckie rozwiązanie, a wygląda na to, że jest narzut, ponieważ będę ładować dwa razy to samo na mojej stronie.

Czy to słuszne zadanie, czy jest inny sposób na zrobienie tego?

Dzięki!

+0

Spróbuj bezpośrednio odwiedzić twoja tabela_reservas.php, dostaniesz ten sam błąd też. Musisz więc sprawić, aby twoja strona działała poprawnie, zanim zadzwonisz z AJAX. – Termis

Odpowiedz

4

Po wysłaniu żądania ajax do serwera jest to zupełnie nowe żądanie, podobnie jak przejście do innej strony.

Więc tak, musisz ponownie wszystko załączyć.

Powinieneś zajrzeć do automatycznego ładowania klas, aby uzyskać bardziej eleganckie rozwiązanie obejmujące zajęcia.

+0

Dzięki! To było bardzo pomocne. – TiagoRL

3

Musisz ponownie dodać wszystkie pliki klas w numerze tabela_reservas.php, ponieważ nie ma zależności między index.php i tabela_reservas.php.

Wszystkie żądania ajax są całkowicie nowe, bez żadnego związku z bieżącą stroną (wywołującą). Traktuj je jak nową stronę:

3

Wywołanie AJAX oznacza: Wywołujesz nową stronę. Nie ma znaczenia, skąd pochodzi połączenie, to tak, jakby wywoływać nową stronę w tle.

Jako taki jest parsowany na nowo, tak jak by był analizowany, gdyby przeglądarka miała do niego dostęp.

Tak, tak: Musisz uwzględnić wszystkie wymagane skrypty w dowolnym skrypcie, który wywołujesz za pośrednictwem AJAX.

0

Musisz mieć inną instancję tej klasy, z której korzystasz w innym skrypcie. Innym sposobem na to byłoby użycie automatycznego ładownia PHP/magic loading (zobacz: PHP: Autoloading)

Powiązane problemy