0

在我的外部 JavaScript 文件中,我有以下 jQuery 代码:

$(function(){
    $('#follow').on('click',function(){
        $.ajax({
            type: 'POST',
            url : 'functions/follow.php',
            data: {follower : session_id,
                   user : p_id,
            success: function(result) {
                if(result == 'followed'){
                    $('#follow').attr('id','unfollow').text('-Unfollow');
                }
            }
        });
    });
});

在我的正常页面上,我有这个:

var session_id = '<?php echo $_SESSION['id']; ?>',
    p_id = '<?php echo $p_id; ?>';

但这不是将变量传递给 jQuery 函数。在调用 JavaScript 文件之前,我也设置了这两个变量。

编辑:我已经在与按钮所在的同一页面上使用函数对此进行了测试,并且我通过回显传入了 PHP 值,然后它就可以工作了。

4

1 回答 1

1

您可以在 jquery 对象中创建一个命名空间,即使在事件内部也可以访问它。像这样:

$.mynamespace = { 
    session_id: '<?php echo $_SESSION['id']; ?>',
    p_id: '<?php echo $p_id; ?>'
};

然后在您的代码中引用这些命名空间变量,如下所示:

$(function(){
    $('#follow').on('click',function(){
        $.ajax({
            type: 'POST',
            url : 'functions/follow.php',
            data: {follower : $.mynamespace.session_id,
                   user : $.mynamespace.p_id,
            success: function(result) {
                if(result == 'followed'){
                    $('#follow').attr('id','unfollow').text('-Unfollow');
                }
            }
        });
    });
});

这也将使它们可用于任何其他 jQuery 事件/回调等

(注意:确保在尝试使用变量之前设置变量,即在脚本中更高)

于 2013-05-27T01:45:48.433 回答