[英]one php file for all jquery post requests?
我有很多jquery ajax方法,並且每個方法都有一個小的php文件。
是否可以創建一個單獨的php文件,而不是在jquery方面引用php文件中的特定函數?
像這樣:
$.ajax({
type: "POST",
url: "functions.php", function01(),
....
下一個功能:
$.ajax({
type: "POST",
url: "functions.php", function02(),
....
如果有可能 - 整體表現可能是錯誤的做法嗎?
您正在尋找將請求路由到正確的收件人。
這是許多MVC框架中的常見做法,與代碼的可維護性相比,它沒有顯着的性能影響( - 如果做得對)。
一個非常簡單的例子:
<?php
// request.php
$allowedRequests = [
// these files will correctly handle the specific requests when included
'db' => 'db.php',
'file' => 'file.php'
];
$request = $_GET['request'];
if (isset($allowedRequests[$request)) {
include($allowedRequests[$request]);
}
然后,只需在客戶端傳遞另一個GET參數:
$.ajax({
type: "POST",
url: "functions.php?request=db"
根據請求參數,將選擇並包含正確的文件。
注意:正如我已經說過的,這是一個非常簡單的例子。 例如,CakePHP支持在不同文件中存儲分組功能(=控制器)。 無論如何,要點是將整個請求參數重定向到應用程序的正確部分。
你可以,但不太喜歡。
我建議在請求中發送一個參數來告訴它要運行什么函數。
$.ajax({
type: "POST",
url: "functions.php",
data: {
method: 'function01'
# and then whatever other data you send
}
});
然后在PHP中,只需使用method
param來調用正確的函數。
<?php
$funcName = $_POST['method'];
call_user_func($funcName);
function function01(){
}
function function02(){
}
注意:你應該對白名單檢查$_POST['method']
,這樣你的頁面就是安全的。 不希望有人發送method=eval
。
您可以傳遞$ _POST var以及其余的AJAX數據,並使用它來確定要運行的函數,如下所示:
JS
$.ajax({
type: 'POST',
url: 'function.php',
data: {
action: 'function01',
... // Other Data
}
...
});
PHP
if ($_POST['action'] == 'function01'){
...
}
我希望這有幫助!
你的權利,事實上你應該盡量不以另一種方式去做。 想一下調用正確函數的1個調度程序文件。 你自己幫個忙,因為你現在只能定義1個錯誤處理程序,1個輸出處理程序etcetc。
至於您的問題:在您的請求中添加“數據”,以便您可以識別請求的類型。 根據請求的類型,您可以調用正確的方法(例如,使用開關來評估$ _POST值)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.