如何仅刷新用户单击的div

时间:2016-07-09 21:52:29

标签: php jquery ajax

我想刷新用户点击的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

任何帮助?

2 个答案:

答案 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语法,因为您可以在那里进行过滤。