2013-02-08 109 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