如何使用ajax从一组函数中调用单个函数?

时间:2014-06-15 17:42:54

标签: javascript php jquery ajax

我试图每个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()等其他函数或所有其他函数获取消息。为什么?我在哪里误会。我可以在不将每个函数放在文件中的情况下执行此操作。

2 个答案:

答案 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();

}