我想刷新用户点击的div,其中div的id基于从数据库中提取的数据的ID。
让我们说 如果用户单击id为#topic-4 的div,则只应在成功执行ajax操作后刷新该div。但我的问题是我不知道如何处理动态生成的div的ID
我认为问题出在我的ajax代码中
$('#topic-4').load(location.href + ' #topic-4');
要记住的一件事是,从数据库中动态获取ids topic-4 ... 。我还希望将ajax代码保留在重复区域之外
我的ajax代码
$(function() {
$(document).on("click", ".first", function(e) {
e.preventDefault();
var uid = $(this).data('id');
$.get('vote.php?id=' + uid, function(html){
$('#topic-4').load(location.href + ' #topic-4');
});
});
});
主题从数据库中获取并在do do php中重复,如图所示:
<?php do { ?>
<div class="first" id="topic-<?php $row_topics['id']; ?>">
<a href="#" data-id="<?php echo $row_topics['id']; ?>" class="btn"> click </a>
</div>
<?php } while ($row_topics = mysqli_fetch_assoc($query_topics)); ?>
结果
<div class="first" id="topic-1">
<a href="#" data-id="1" class="btn"> click </a>
</div>
<div class="first" id="topic-2">
<a href="#" data-id="2" class="btn"> click </a>
</div>
<div class="first" id="topic-3">
<a href="#" data-id="3" class="btn"> click </a>
</div>
...and soon
任何帮助?
答案 0 :(得分:2)
试试这个:
$.get('vote.php?id=' + uid, function(html) {
$.get(location.href + '?' + (new Date()).getTime(), function(response) {
var newTopic = $(response).find('#topic-' + uid);
$('#topic-' + uid).html(newTopic.html());
});
});
location.href + '?' + (new Date()).getTime()
确保重新加载页面,没有任何缓存。
然后,您通过$(response)
构建一个新的jQuery对象,并在其中搜索所需的主题。
之后,您可以为当前主题分配新值。
它应该可以在php
代码中进行任何更改。
为了简单起见,您必须更改vote.php
,这样它才会返回一个新的upvoted主题html,而不是您可以这样做:
$.get('vote.php?id=' + uid, function(response) {
$('#topic-' + uid).html(response);
});
答案 1 :(得分:0)
您的问题是,您再次获得了所有DIVS
,就像您在PHP(非完整)代码中向我们展示的那样。
编写处理GET
的所有PHP代码,以便我们为您提供更多帮助。主要问题在于您的SQL语法,因为您可以在那里进行过滤。