多个PHP函数在同一文件中的问题

时间:2013-11-01 10:21:08

标签: php jquery

我想对一个名为functions.php的php文件进行AJAX调用,其中我有多个相关函数(所有对数据库进行数据库更改,即添加,编辑,删除)。我一直在努力解决这个问题,因为AJAX调用似乎运行正常,但是从服务器返回的响应是空的(内容长度:0)。我回到原点,只是使用AJAX将数据发送到一个php文件,该文件只包含处理那一个调用的php代码(即没有函数),并且它工作正常。只要我将该简单语句包装到函数中,它就会再次失败。所以我正在做的事情导致php在我将它包装在函数中时不发送响应。

您是否必须以某种方式从您的ajax脚本或表单元素中的某个位置调用特定的php函数?如果有多个函数,php文件如何知道你在ajax调用中请求的函数?或者只是通过匹配$ _POST元素和发送的数据来解决它,无论$ _POST元素在哪个函数中?

我怀疑我的PHP代码应该受到指责:

function delete_account(){
require(ROOT_PATH . "/inc/database.php");

$deleteAccount = $_POST['accountName'];

try {
    $results = $db->prepare("DELETE FROM account WHERE account_id_PK = ?");
    $results->bindValue(1, $deleteAccount);
    $results->execute();
} catch(Exception $e) {
    echo "ERROR: Data could not be removed from the database. " . $e;
    exit;
}
return;
}

此外,当我按下提交按钮并激活我的ajax呼叫时,它会立即在浏览器中返回成功消息,并且当我在google dev工具窗口中观看网络选项卡时,会显示成功消息貌似在php文件加载之前。我尝试过设置async:false。

添加AJAX代码:

function deleteAccount(){
    event.preventDefault();

    var accountName = $('.account_name').filter(":selected").attr("name");

    $.ajax({
        type: "POST",
        url: 'inc/functions.php', 
        data: {accountName:accountName}, 
        async: false,
        success: function(response){
        $('#results').html(response + " has been deleted.");
        }
    });
};

1 个答案:

答案 0 :(得分:3)

如果您的PHP文件中有多个函数,那么您可以在jQuery ajax中执行类似:: pass in extra参数的操作,例如:

$.ajax({
    url: "some_file.php?action=get_accounts"
}).done(function() {
    $( this ).addClass( "done" );
});

并在PHP文件中使用switch根据ajax中action变量的值调用适当的函数,例如:

//in PHP
.....
$action = $_GET['action'];
switch ($action) {
    case "get_accounts":
        //call the function
        get_accounts();
        break;
    case "otherFunction":
        ....
        break;
}