php不需要在load()方法之后工作来刷新div



我的div中有一个php需要

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

再次需要数据库连接

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

当我加载页面时,它们都工作。

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

我得到以下路径错误:

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

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

为什么路径应该不同?我该怎么修?

您的错误解释了一切:

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

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

注意它是如何表示在以下目录中找不到inc/connect.inc.php的:

C:xampphtdocstaximatinccoreturni

这是因为您的require语句引用的是相对路径。因此,当加载文件list.inc.php时,require假设inc/connect.inc.php位于C:xampphtdocstaximatinccoreturni中。这就是它失败的原因。

你应该这样在你的应用程序中设置一个基本路径。只是需要注意的是,我不清楚在这种情况下的正斜杠或反斜杠语法,因为我主要在Mac上工作;Unix系统,错误显示窗口路径,但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即可。

当页面第一次显示时,您的路径如下:

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

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

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

list.php
../
    connect.php

现在,require应该用于../connect.php

解决方案

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

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

dirname(__DIR__)构造将始终在文件系统上生成比当前脚本所在位置高一个的目录。

最新更新