我有一个对php页面的ajax调用,我在其中使用GET传递ID。
<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给我一个错误:
致命错误:在第20行的C:\ xampp \ htdocs \ kwagenda \ tabela_reservas.php中找不到类'Reserva'
如果我在"tabela_reservas.php"
中包含我的课程文件,那么它可以正常工作。但是这些类文件已经加载/包含在我的"index.php"
中,我称之为ajax页面。
我的问题是:我是否需要再次在"tabela_reservas.php"
上包含我的php类文件,或者还有另一种方法吗?
我问这个是因为,对我而言,它似乎不是一个非常优雅的解决方案,而且它看起来像是一个开销,因为我将在我的页面上加载两倍相同的东西。
这是正确的做法还是有另一种做法?
谢谢!
答案 0 :(得分:4)
当您向服务器发出ajax请求时,这是一个全新的请求,就像导航到另一个页面一样。
所以是的,你需要再包括一切。
您应该研究类的自动加载,以获得更优雅的解决方案以包含类。
答案 1 :(得分:3)
您需要在tabela_reservas.php
中再次包含所有类文件,因为index.php
和tabela_reservas.php
之间没有任何关系。
所有ajax请求都是全新的,与当前(调用者)页面没有任何关系。将这些视为一个被称为的新页面:)
答案 2 :(得分:3)
AJAX通话意味着:您正在呼叫新页面。呼叫来自何处并不重要,就像在后台调用新页面一样。
因此它会被重新解析,就像浏览器访问它时会被解析一样。
是的:您必须在通过AJAX调用的任何脚本中包含所有必需的脚本。
答案 3 :(得分:0)
你需要让这个类的另一个实例在另一个脚本中使用它。另一种方法是使用PHP自动加载/魔术加载(参见:PHP: Autoloading)