php要求在load()方法刷新div后不工作

时间:2013-11-29 20:59:35

标签: php jquery path

我的div里面有一个php要求

require('inc/coreturni/list.php');

再次需要数据库连接

require('inc/connect.inc.php');

当我加载页面时它们都起作用。

但是如果我尝试刷新div,则在点击事件之后刷新第一个包含文件,使用jquery load()

我收到以下路径错误:

  

警告:require(inc / connect.inc.php):无法打开流:第2行的C:\ xampp \ htdocs \ taximat \ inc \ coreturni \ list.inc.php中没有此类文件或目录

     

致命错误:require():在C:\ xampp \ htdocs \ taximat \ inc \中打开所需的'inc / connect.inc.php'(include_path ='。; C:\ xampp \ php \ PEAR')失败第2行的coreturni \ list.inc.php

为什么路径应该不同?我怎么能解决它?

2 个答案:

答案 0 :(得分:3)

您的错误解释了所有内容:

  

警告:require( inc / connect.inc.php ):无法打开流:没有   文件或目录   第2行 C:\ xampp \ htdocs \ taximat \ inc \ coreturni \ list.inc.php

     

致命错误:require():无法打开所需的' inc / connect.inc.php '   (include_path ='。; C:\ xampp \ php \ PEAR')in   第2行 C:\ xampp \ htdocs \ taximat \ inc \ coreturni \ list.inc.php

请注意它在该目录中找不到inc/connect.inc.php

C:\xampp\htdocs\taximat\inc\coreturni

这是因为您的require语句指的是相对路径。因此,当加载文件list.inc.php时,require假设inc/connect.inc.php位于C:\xampp\htdocs\taximat\inc\coreturni。这就是失败的原因。

您应该像这样在应用中设置基本路径。请注意,在这种情况下我不清楚正斜杠或反斜杠语法,因为我主要在Mac& Unix系统和错误显示了Windows路径,但PHP显示的是Unix路径。

$BASE_PATH='/xampp/htdocs/taximat/inc/coreturni/';

并且要求所有这样的文件:

require($BASE_PATH . 'inc/coreturni/list.php');

就像这样:

require($BASE_PATH . 'inc/connect.inc.php');

无论在何处调用文件,require都将使用文件的绝对路径。由于$BASE_PATH是您设置的一次性变量,您可以在主配置文件中设置它而不用担心它。要使代码可移植,只需根据系统设置更改$BASE_PATH

答案 1 :(得分:1)

首次显示页面时,您的路径如下:

page.php
inc/
    coreturni/
        list.php
    connect.php

换句话说,从require看,所有page.php语句都是相对的。

但是,当您直接使用AJAX请求list.php时,它看起来更像是这样:

list.php
../
    connect.php

现在,require应该是../connect.php

<强>解决方案

解决此问题的一种方法是根据当前正在处理的文件(即list.php)计算绝对路径,如下所示:

require dirname(__DIR__) . '/connect.php';

dirname(__DIR__)构造将始终生成文件系统上比当前脚本更高的目录。