我试图每个ajax请求只调用一个函数,但不知怎的,他的php文件中的所有函数都被调用。
ajax.php
require_once "../lib/common-functions.php"; // here are the functions located.
subscribe();
subscribed();
unsubscribe();
delete_history();
deactivate_account();
和ajax脚本:
$('#delete-history').on('submit', function (e) {
$.ajax({
type: 'post',
url: '../lib/ajax.html',
data: {
action: 'delete_history'
},
success: function (data) {
$("#message").html(data);
}
});
e.preventDefault();
});
如果我只想调用函数delete_history()
,那么我会立即从subscribe()
等其他函数或所有其他函数获取消息。为什么?我在哪里误会。我可以在不将每个函数放在文件中的情况下执行此操作。
答案 0 :(得分:3)
您要发布到index.html,所以我猜不仅没有调用期望的函数,也没有调用。
您应该调用相应的.php文件,声明或至少包含这些函数。
funcName()
语法调用该函数,因此如果您在声明这些行之后:
subscribe();
subscribed();
unsubscribe();
delete_history();
deactivate_account();
你会打电话给所有人。您需要一个取决于用户发布内容的条件。 E.g:
if (isset($_POST['action']) && $_POST['action'] == 'subscribe') {
subscribe();
}
在你的情况下,你发送了$_POST['action'] = 'delete_history'
,但你不能指望用相关功能映射帖子参数。我很惊讶你有这些期望。谁曾告诉过你,发送一个动作参数会被后端神奇地理解?
你应该遵循上面的模式。
if (isset($_POST['action']) && $_POST['action'] == 'delete_history') {
delete_history();
}
答案 1 :(得分:1)
$('#delete-history').on('submit', function (e) {
$.ajax({
type: 'post',
url: '../lib/ajax.html',
data: {
action: 'function=delete'
},
success: function (data) {
$("#message").html(data);
}
});
e.preventDefault();
});
包含所有功能的PHP
if($_POST['function'] == 'delete')
{
delete_history();
}