如何在ajax调用中动态传递数据选项的键?

时间:2016-07-20 12:23:24

标签: php jquery ajax

我试图将data选项的动态密钥传递给ajax调用。

data:{action:'add',id:10},

实际上我正在尝试创建全局函数,该函数可用于所有表以禁用特定行onClick事件。为此,我需要为调用php函数添加不同的动作和表列名。所以我也希望传递密钥和值。

JS函数

function globalDisable(id,table_column,call_action){
    // call_action is use for calling the related php function
    // table_column is use for calling the column name of that table
    action_parm = {call_action:'disable',table_column:id}
    $.ajax({
        type:'POST',
        url:'post.php',
        data:action_parm,
        success: function(response){
        }
    });
}

调用JS函数

onclick="return globalDisable(10,'user_id','disableUser');"

Php脚本

$disableUser  = (isset($_REQUEST['disableUser']))? (string)$_REQUEST['disableUser']:'not';
if($disableUser != 'not'){
    $response->disArea($user_id);
}

当我运行该功能时,在控制台中不会将其保持不变call_action=disable&table_column=10

那么可以在ajax调用中为数据选项传递动态密钥吗?如果有人指导我这件事,我想表示感谢。谢谢

2 个答案:

答案 0 :(得分:0)

而不是action_parm = {call_action:'disable',table_column:id},写:

var action_param = {};
action_param[call_action]='disable';
action_param[table_column]='id';

请参阅:How do I add a property to a JavaScript object using a variable as the name?

答案 1 :(得分:-1)

您将操作作为参数传递给函数,但之后在ajax调用中不使用它

function globalDisable(id,table_column,call_action){
    // call_action is use for calling the related php function
    // table_column is use for calling the column name of that table

    $.ajax({
        type:'POST',
        url:'post.php',
        data:{ call_action: call_action,
               table_column: table_column, 
               user_id: id
             },
        success: function(response){
        }
    });
}

你可以这样做,也许你会发现它更容易阅读

$disableUser  = (isset($_REQUEST['call_action']))? (string)$_REQUEST['call_action'] : 'not';
if($disableUser != 'not'){
    $response->disArea($user_id);
}

同样在PHP中,您正在测试$ _REQUEST

中的错误参数
convertImageToMP4 (Clip mediaIn, int duration, String outPath, ShellCallback sc)