在我的外部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文件之前设置了这两个变量。
编辑:我已经使用与按钮位于同一页面的函数对此进行了测试,并且我使用echo传递了PHP值,然后就可以了。
答案 0 :(得分: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事件/回调等
(注意:确保在尝试使用它们之前设置变量,即在脚本中更高)