Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何仅刷新用户从中单击的div_Php_Jquery_Ajax - Fatal编程技术网

Php 如何仅刷新用户从中单击的div

Php 如何仅刷新用户从中单击的div,php,jquery,ajax,Php,Jquery,Ajax,我想刷新用户单击的div,其中div的id基于从数据库获取的数据的id 让我们说 如果用户单击了id为#topic-4的div,则只有在成功执行ajax操作后才应刷新该div。但是我的问题是我不知道如何处理div的动态生成的id 我相信问题出在我的ajax代码中 $('#topic-4').load(location.href + ' #topic-4'); 需要记住的一点是,idtopic-4…是从数据库动态获取的。我还希望将ajax代码保持在重复区域之外 我的ajax代码 $(functi

我想刷新用户单击的div,其中div的id基于从数据库获取的数据的id

让我们说 如果用户单击了id为#topic-4的div,则只有在成功执行ajax操作后才应刷新该div。但是我的问题是我不知道如何处理div的动态生成的id

我相信问题出在我的ajax代码中

$('#topic-4').load(location.href + ' #topic-4');
需要记住的一点是,idtopic-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 while 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
,正如您在PHP(不完整)代码中向我们展示的那样

编写所有处理
GET
的PHP代码,这样我们可以为您提供更多帮助。主要问题在于SQL语法,因为您可以在那里进行筛选。

尝试以下方法:

$.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
,这样它将只返回一个新的向上投票的主题html,而不是您可以执行的操作:

$.get('vote.php?id=' + uid, function(response) {
    $('#topic-' + uid).html(response);
});

你能重新解释一下实际的问题是什么吗?他的问题是他点击了div id 4,他得到了该div中的所有div,而不仅仅是div 4信息,所以他没有刷新div id 4,他得到了div id中的所有div4@JoseManuelAbarcaRodr我甚至不知道为什么。你有更好的计划吗idea@Jeff我已经从…添加了一些内容。让我们感谢您的努力。
newTopic.html()
?@krushiovida,
newTopic.html()
在响应中返回
innerHTML
。我的新更新更能正确解决这种情况。现在我明白了。我会试试看。@krushiovida,记住,你的
投票。php
必须只返回被投票主题的
innerHTML
,而不是main
,我仍在试图操纵你的想法。当我像这样使用它时,它就工作了('#topic-'+uid).load('#topic-'+uid)$.get('vote.php?id=' + uid, function(response) {
    $('#topic-' + uid).html(response);
});