抱歉,如果我的問題不能清楚地理解,我不知道如何用英語表達我想說的話。
這不是代碼本身的問題,因為它的作業原理如圖所示,但主要是對 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 呼叫特定函式,因此我想這是最好的情況,但如果您能指出有關它的良好做法,我將不勝感激。
uj5u.com熱心網友回復:
我認為您在這里的困惑在于定義函式和執行函式之間。
要定義一個函式,你可以這樣寫:
function say_hello_world() {
echo "Hello, World!\n";
}
這不會導致任何事情立即發生,它只是定義了如何做某事。在這種情況下,基本上就像說:
每當我問你“問好世界”時,輸出到螢屏“你好,世界!\n”
為了讓事情真正發生,你必須執行這個函式,它看起來像這樣:
say_hello_world();
這基本上是在說:
做我給你的“say hello world”動作
在您的示例中,您的檔案'loademp.php' 定義了一個名為的函式loademp-它說“每當我要求您'loademp'時,這就是我希望您做的事情”。在您的另一個檔案中,您包含該檔案,因此定義了該函式。然后,您使用以下行運行它:
loademp();
AJAX 呼叫與任何其他頁面加載沒有什么不同,因此您需要在那里做同樣的事情 - 首先,定義函式,或包含執行此操作的檔案;然后,執行函式。
loademp.php因此,您可以呼叫 PHP 腳本,而不是直接呼叫,就像define_and_execute_loademp.php您提到的行一樣:
require __DIR__.'loademp.php';
loademp();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/424074.html
下一篇:使用AJAX單擊時獲取Div值
