簡體   English   中英

所有jquery帖子請求的一個php文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM