2013-01-03 27 views
6

Tôi có một cuộc gọi ajax đến trang php trong đó tôi chuyển ID bằng GET.Tôi có cần phải bao gồm các tập lệnh PHP một lần nữa trong một trang PHP tải ajax không?

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

Nó hoạt động, ngoại trừ PHP mà mang lại cho tôi một lỗi:

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

Nếu tôi bao gồm các file lớp học của tôi trong "tabela_reservas.php" nó hoạt động. Nhưng các tệp Lớp này đã được tải/bao gồm trong số "index.php" của tôi từ nơi tôi đang gọi trang ajax này.

Câu hỏi của tôi là: tôi có cần bao gồm tệp lớp php của mình theo số "tabela_reservas.php" một lần nữa hoặc có cách khác để thực hiện không?

Tôi hỏi điều này vì, với tôi, nó không có vẻ là một giải pháp rất thanh lịch, và nó trông giống như một chi phí, vì tôi sẽ tải hai lần cùng một thứ trên trang của tôi.

Đây có phải là điều đúng để làm hoặc có cách khác để làm điều này?

Cảm ơn!

+0

Cố gắng truy cập trực tiếp vào tabela_reservas.php của bạn, bạn cũng sẽ gặp lỗi tương tự. Vì vậy, bạn phải làm cho trang của bạn hoạt động tốt, trước khi gọi với AJAX. – Termis

Trả lời

4

Khi bạn thực hiện yêu cầu ajax cho máy chủ, đây là yêu cầu hoàn toàn mới, giống như điều hướng đến một trang khác.

Vì vậy, có, bạn cần bao gồm mọi thứ một lần nữa.

Bạn nên xem xét tự động tải các lớp học để có giải pháp thanh lịch hơn bao gồm các lớp học.

+0

Cảm ơn! Điều đó rất hữu ích. – TiagoRL

3

Bạn cần phải bao gồm tất cả các tệp lớp học một lần nữa trong tabela_reservas.php vì không có mối quan hệ nào giữa index.phptabela_reservas.php.

Tất cả yêu cầu ajax hoàn toàn mới mà không có bất kỳ liên quan nào đến trang hiện tại (người gọi). Xem xét những trang đó dưới dạng một trang mới đang được gọi là :)

3

Cuộc gọi AJAX có nghĩa là: Bạn đang gọi một trang mới. Việc cuộc gọi đến từ đâu không quan trọng, nó giống như đang gọi trang mới ở chế độ nền.

Như vậy nó được phân tích cú pháp một lần nữa, giống như nó sẽ được phân tích cú pháp nếu một trình duyệt truy cập nó.

Vì vậy, có: Bạn phải bao gồm tất cả tập lệnh bắt buộc trong bất kỳ tập lệnh nào bạn gọi qua AJAX.

0

Bạn cần có một phiên bản khác của lớp này, bạn sử dụng nó trong tập lệnh khác. Một cách khác để thực hiện việc này là sử dụng tính năng tự động tải/tải ma thuật của PHP (Xem: PHP: Autoloading)

Các vấn đề liên quan