2013-02-08 104 views
2

我的包含语句有问题。我有几个PHP文件,这些文件在页面被初始加载时加载,然后由jQuery ajax调用再次调用。由于ajax调用,我没有在函数中使用php脚本,但是当我从另一个位置调用它们(ajax调用)时,我收到了包含语句的错误。例如我的主要页面包含这个PHP脚本:从包含语句错误的jquery ajax调用php函数

<div id="controlPanelForm"> 
    <?php include "lib/getControlPanel.php"; ?> 
</div> 

这里是getControlPanel.php文件的前几行:

<?php 
include_once("../etc/includes.php"); 
...do something... 

这里是Ajax调用:

function getControl(teamID) 
{  $.ajax({ 
      type: "GET", 
      data: {teamID: teamID}, 
      url: "./lib/getControlPanel.php", 
      dataType: "html", 
      async: true, 
      success: function(response) 
      { 
       $('#controlPanelForm').html(response); 
      } 
    }); 
} 

所以问题是,当我从ajax调用的PHP脚本我得到这个错误:

include_once(../etc/includes.php): failed to open stream: No such file or directory in 

如果我改变了相对路径,原来包括在主页无法正常工作......

我怎样才能解决这个问题?

在此先感谢!

+1

您可能需要该文件为绝对路径。它试图从你的jQuery文件运行的地方包含该文件。 – 2013-02-08 22:22:26

+0

我试过了,但在我的includes.php文件中我定义了一个函数,并且出现一个错误,指出我不能重新声明一个函数。 – rodzilla 2013-02-08 22:27:04

+1

您的文件被错误引用。尝试在浏览器中触发getControlPanel.php,您将得到相同的错误。 作为一个说明,Kacey:它没有引用该文件相对于进行ajax调用的文件。该路径与包含/需要调用的文件相关。 – Todd 2013-02-08 22:27:49

回答

0

您可以通过更正包含文件的路径(includes.php)来修复它。你可以引用它作为贬值或相对的,无所谓。重要的是它被正确引用。尽管如此,我更喜欢绝对路径(使用常量来定义到web/app根目录的路径)。

为了找出正确的路径(您是否要使用相对或绝对),掉落

echo phpinfo(); 
在文件

,并采取看看DOCUMENT_ROOT或SCRIPT_FILENAME瓦尔。

2
include_once(../etc/includes.php): failed to open stream: No such file or directory in 

该错误表明'../etc/includes.php'文件不存在。您可以使用getcwd()来查看您当前的工作目录,以确定您的相对链接实际指向的位置。

然而,相对路径是一种痛苦。我从不使用它们。我所有的项目都含有包含配置值的config.php文件:

// paths and urls 
define('SITE_PATH', '/var/www/my_website/'); 
define('SITE_URL', 'http://localhost/my_website/'); 

现在一切都可以是绝对的。修改你的例子:

<div id="controlPanelForm"> 
    <?php include SITE_PATH . 'lib/getControlPanel.php'; ?> 
</div> 

getControlPanel.php:

<?php 
include_once(SITE_PATH . 'etc/includes.php'); 

很多更可以用这些定义,如对加载文件创建功能,发送重定向报头等

在一个完成请注意,在使用AJAX调用进行调试之前,请通过直接使用Web浏览器直接对其进行测试来测试ajax页面。这样,你可以告诉问题是否是一个PHP问题或JavaScript问题。

+0

然后我不会遇到与包括config.php文件相同的问题? – rodzilla 2013-02-08 23:02:11

+0

config.php文件是您需要知道如何包含的唯一文件。其余的你可以肯定会包括使用正确的路径。 – 2013-02-08 23:06:08

+0

问题是我不知道如何正确包含文件... – rodzilla 2013-02-08 23:20:24