我想调用一个名为functions.php的php文件,其中我有多个相关的函数(所有数据库更改为账户,即添加,编辑,删除) 。我一直在努力,因为AJAX调用似乎很好,但从服务器返回的响应是空的(content-lenght:0)。我回到了原点,只是使用AJAX发送数据到一个只包含php代码来处理这个调用(即没有函数)的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调用被解雇了,它会立即返回在浏览器中成功的消息,并作为我在我的谷歌开发工具窗口中观看网络选项卡,成功消息显示在php文件被加载之前。我试过设置异步: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.");
}
});
};
您将您的ajax调用参数发送到php文件。所以你也可以设置一些“标志参数”,如?delete = true&id = 1。如果删除isset = true - >调用delete_account() 用这种方法,你可以从你的ajax调用发送许多不同的参数到你的PHP文件,并选择你想要执行的功能 – KURN