很抱歉,如果我的问题不能很清楚地理解,我不知道如何用英语很好地表达我想说的话。
这不是代码本身的问题,正如图所示,但主要是对PHP行为的怀疑。
当我从另一个php文件调用函数时,它似乎读取了函数本身,即function loademp(){}
然而,如果我从ajax访问包含该函数的文件,则似乎需要对该函数(即loademp()
(进行调用才能在同一文件中。
由于我遇到了这个问题,我最终使用了这段代码,以便使其从两个来源都能工作,在if条件中调用ajax,否则它将从php文件中调用两次:
<?php
if ($_POST['runFunct']=="loademp"){ //call from ajax needs 'loademp()' to access the function;
loademp();
}
function loademp(){ //loaded from another file apparently.
try{
//PDO code
print_r(json_encode($results));
}catch(PDOException $e){
echo $e;
}
}
我的另一个文件看起来像这样:
require __DIR__.'loademp.php';
loademp();
难道没有一种更实用的方法可以将代码用于这两种情况,而不依赖于来源进行条件反射吗?由于如果不使用POST变量,我就无法从ajax调用特定的函数,我想这是最好的情况,但如果您能指出有关它的良好实践,我将不胜感激
我认为您在这里的困惑在于定义函数和执行功能之间。
要定义一个函数,你可以写这样的东西:
function say_hello_world() {
echo "Hello, World!n";
}
这不会立即导致任何事情发生,它只是定义如何做某事。在这种情况下,基本上就像在说:
每当我要求你"说你好世界";,输出到屏幕";你好,世界!\n〃;
要使某些事情真正发生,您必须执行函数,如下所示:
say_hello_world();
这基本上是说:
做我为";说你好世界";
在您的示例中,文件'loademp.php'
定义了一个名为loademp
的函数,它说";每当我要求你"加载emp"时,我都希望你这样做;。在另一个文件中,包含了该文件,因此定义了函数。然后,你用这行运行它:
loademp();
AJAX调用与其他页面加载没有什么不同,所以你需要在那里做同样的事情——首先,定义函数,或者包括这样做的文件;然后,执行函数。
因此,不直接调用loademp.php
,您可以调用define_and_execute_loademp.php
这样的PHP脚本,并使用您提到的行:
require __DIR__.'loademp.php';
loademp();