2013-01-03 42 views
6

我有一個ajax調用一個php頁面,其中我使用GET傳遞一個ID。我是否需要再次將PHP腳本包含在ajax加載的PHP頁面中?

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

它的工作原理,不同的是PHP給我一個錯誤:

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

如果我包括它的工作原理"tabela_reservas.php"我的類文件。但是這些Class文件已經加載/包含在我調用這個ajax頁面的地方"index.php"中。

我的問題是:我需要再次在"tabela_reservas.php"上包含我的php類文件還是有另一種方法呢?

我問這是因爲對我來說,它似乎不是一個非常優雅的解決方案,它看起來像一個開銷,因爲我會在我的頁面上加載兩次相同的東西。

這是做的正確的事情還是有另一種方式做到這一點?

謝謝!

+0

嘗試直接訪問您的tabela_reservas.php,您也會得到相同的錯誤。所以你必須讓你的頁面正常工作,然後用AJAX調用。 – Termis

回答

4

當您向服務器發出ajax請求時,這是一個全新的請求,就像導航到另一個頁面一樣。

所以是的,你需要再次包括所有東西。

您應該研究類的自動加載,以獲得更優雅的解決方案以包含類。

+0

謝謝!這非常有幫助。 – TiagoRL

3

由於index.phptabela_reservas.php之間沒有關係,所以需要再次在tabela_reservas.php中包含所有類文件。

所有ajax請求都是全新的,與當前(調用者)頁面沒有任何關係。將這些視爲正在調用的新頁面:)

3

AJAX調用意味着:您正在調用新頁面。來電的來源無關緊要,就像在後臺調用新頁面一樣。

因此,它會被重新解析,就像瀏覽器訪問它時會被解析一樣。

所以是的:你必須在你通過AJAX調用的任何腳本中包含所有必需的腳本。

0

您需要在另一個腳本中使用此類的另一個實例。這樣做的另一種方法是使用PHP自動加載/魔術加載(請參閱:PHP: Autoloading

相關問題