我想对一个名为 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 调用时,它会立即在浏览器中返回成功消息,并且当我在我的谷歌开发工具窗口上观看网络选项卡时,成功消息似乎显示在php 文件甚至被加载。我试过设置异步:假。
添加 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.");
}
});
};