2013-12-10 203 views
0

我使用了很多AJAX來電,我會說,從AJAX調用PHP函數?

data: {action: "get_categories", etc..} 

,然後在我的PHP我會說,

if(isset($_POST['action']) && ($_POST['action'] == 'get_categories')) { 
//do stuff 
} 

我試圖重構代碼我希望將這些代碼塊中的一個代碼塊的輸出傳遞給另一個代碼塊,但它不是PHP函數,所以我不確定該怎麼做?有沒有辦法直接從AJAX調用來調用PHP函數,而不是使用操作?

另外,在使用這種風格的PHP代碼塊時,我必須在每個代碼塊中調用以下代碼,並且我不確定爲什麼?我想如果我把它放在我的PHP文件的頂部,並使用require_once可能工作,但沒有任何我嘗試工作,除非我在每個代碼塊中包括這些。

require("config.php"); 
require("database.php"); 
+0

我在上面的代碼中看不到任何PHP函數?一切看起來都很好,我不確定你在問什麼? – superphonic

+0

你可以通過AJAX調用「直接」執行函數。像這樣:'$ _POST ['action']();' – onionpsy

+0

@psal哦,上帝,真的嗎?! 'POST execute.php HTTP/1.1 \ n \ naction = deleteAllData' – deceze

回答

1

不,您不能從客戶端Javascript調用PHP函數。首先,確保你明白這一點:What is the difference between client-side and server-side programming?。完成這些之後,您將看到通過AJAX HTTP調用來執行服務器端任何事情的唯一方式,這是對任何其他PHP腳本將使用的網站的常規請求。對於這個問題,HTTP沒有「功能」或任何特定編程語言的概念。您可以使用HTTP請求請求網址,僅此而已。當請求這些URL時,您可以執行PHP代碼來處理這些請求。每個新請求都完全獨立於所有其他請求,因此每個請求都是一個獨立的腳本執行,它需要自己的包含和要求。

在瀏覽器的開發工具(Chrome/Safari Web Inspector,Firebug或類似軟件)中打開網絡檢查器選項卡,然後觀察AJAX請求來回傳輸到服務器。這應該說明這個概念比任何解釋都要好得多。

+0

好的,這是有道理的,這就是我從谷歌搜索看到的,但我只是覺得我必須錯過一些東西。只要這是它應該的方式,那麼我就很好。還有一個問題......我將如何從這些PHP代碼塊中的一個輸出變量並在另一個代碼塊中使用它? – hyphen

+0

我不明白最後一個問題。 – deceze

+1

你知道嗎,我只是意識到我的後續問題是無稽之談。我試圖將這些代碼塊視爲函數,而他們不是,我只需要克服它。謝謝你的幫助! – hyphen