我一直在我的PHP项目中尝试使用JS和ajax,但是遇到了一些问题。当页面在点击后刷新或仅刷新时,ajax似乎只能正常工作。我正在使用jquery 3.2.1。
我最初使用的是.live(),但现在已经过时了,我看到.on()是一个替代方案,所以我现在正在使用它。
这是我的JS部分:
$(".up_vote").on("click", function() {
var post_id = $(this).attr('postid');
$.ajax({
type: "POST",
data: {
'post_id': post_id,
'action': 'upvote'
},
url: '<?php echo $url; ?>/includes/functions.php',
dataType: 'json',
success: function(response) {
if (response.ResponseCode == 200) {
$('#postbox_' + post_id).load('<?php echo $url; ?>/index.php #postbox_' + post_id + ' >*');
} else {
alert(response.Message);
}
}
});
});
$(".down_vote").on("click", function() {
var post_id = $(this).attr('postid');
$.ajax({
type: "POST",
data: {
'post_id': post_id,
'action': 'downvote'
},
url: '<?php echo $url; ?>/includes/functions.php',
dataType: 'json',
success: function(response) {
if (response.ResponseCode == 200) {
$('#postbox_' + post_id).load('<?php echo $url; ?>/index.php #postbox_' + post_id + ' >*');
} else {
alert(response.Message);
}
}
});
});
$("#btnpost").click(function() {
var post = $("#post_feed").val();
if (post == "") {
alert("This can't be empty.");
return false;
} else {
$.ajax({
type: "POST",
data: {
'post_feed': post,
'action': 'post'
},
url: '<?php echo $url; ?>/includes/functions.php',
dataType: 'json',
success: function(response) {
if (response.ResponseCode == 200) {
$("#post_feed").val("");
$('#feed_div').load('<?php echo $url; ?>/index.php #feed_div');
} else {
alert(response.Message);
}
}
});
}
});
});
我有什么遗漏或做错的地方吗?
success
回调中使用了.load
?然后你惊讶地发现出现了一些奇怪的行为?而且你甚至没有使用Ajax响应...这看起来很奇怪。 - Louys Patrice Bessetteon
,如果你的 ajax 请求还替换了你点击的元素,你需要使用 委托 版本。 - adeneo