从一个函数传递到另一个函数的变量在使用jQuery的.post之后变得未定义

Variable passed from one function to another become undefined after .post with jQuery

本文关键字:函数 jQuery post 未定义 之后 变量 另一个 一个      更新时间:2024-06-20

我有一个函数成功地将值为2data_user_id传递到function getOptionsList(fieldname_validation,data_user_id)中。但是,我认为.post-statument的异步特性以某种方式去掉了值,所以当我在getOptionsList函数中执行.post时,它下一个传递的函数中的data_user_id将未定义。像这样:

function getOptionsList(fieldname_validation,data_user_id){ 
        $.post('Controller.php',
        {
            action: 'get_options_list',
            user: userJson
        },
        function(data, textStatus, fieldname_validation,data_user_id) {
            data_user_id=data_user_id;
            showOptionsList(data, fieldname_validation,data_user_id);
            $('#indicator').hide();
        }, 
        "json"      
    );  
}
function showOptionsList(jsonData, fieldname_validation,data_user_id){
    alert('showOptionsList ran!');
    alert(data_user_id);//Here the same variable will alert as undefined.
}

如何解决此问题?

您已经将data_user_id声明为内部函数的参数,因此它与外部方法的参数不同。由于$.post方法只会为回调提供3个参数,所以第四个参数将始终是undefined(第三个参数将是jqXhr对象,我认为这不是您所期望的)。

解决方案是删除这个参数(可能还有fieldname_validation):

function getOptionsList(fieldname_validation,data_user_id){ 
        $.post('Controller.php',
        {
            action: 'get_options_list',
            user: userJson
        },
        function(data, textStatus) {
            showOptionsList(data, fieldname_validation, data_user_id);
            $('#indicator').hide();
        }, 
        "json"      
    );  
}