AJAX / PHP投票系统:第一次点击时内容未更新

前端之家收集整理的这篇文章主要介绍了AJAX / PHP投票系统:第一次点击时内容未更新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
测试环境:使用XAMMP工具的 Windows 8. PHPMysqL是最新的.

我的知识:初学者.

问题:我无法在第一次点击后立即获得更新的内容,仅在第二次点击之后,考虑到我的小投票系统有两种按钮,这可能变得非常讨厌.是的,我说了很多不是很多:)
造成这种困境的原因是什么?我该如何解决这个问题?

我做了什么:检查我的开发人员工具网络分析,我得到一个状态200,每次点击都有正确的值.当我使用我的firefox DOM检查器视图时,我看到了一些不寻常的东西:在第一次单击时,只有#votes标记为橙色,可能表示它已受到影响.但是,只有在同一个按钮上的第二次尝试时,除了更新的值之外,两个div(#votes和#progress)都标记为橙色.所以我希望它会在第二次点击时发生,但不会在第一次点击时发生.然后我刷新了我的页面并尝试了其他的东西.我点击“坏”,这次第二次点击落在“好”上,坏了更新DOM中的值.似乎整个过程是分裂的并且不会同时发生,这就是为什么我推测:

>单击1:将数据发送到PHP.
>单击2:从PHP获取数据并将其显示在DOM上.

PHP代码本身与我的数据库和HTML(如果设置为提交)一起工作完全正常,所以我不认为服务器端有任何问题.已设置与数据库的连接.我的会议完美无缺.没有错误.

我的控制台显示0个javascript错误.

测试1:我注释掉了我的整个PHP代码并使用一个简单的字符串设置了一个测试变量,并相应地更改了我的代码中的值.令我惊讶的是,点击它后立即获取数据并显示我的测试变量的内容.

测试2 ::我从下面将看到的两个div标签删除PHP代码.它们充当占位符,在任何AJAX发生之前显示当前值.我删除了那些,我在第一次点击时获得了更新,因为容器首先是空的.虽然,在第二次点击和好坏之间的切换恰好是一个烂摊子.

测试2 ::将jquery和我的AJAX脚本放在文档的头部也没有完成任务(只是为了安全起见).之前它是在< / body>之前标签

>我通过名为data的回调参数访问返回的json对象,然后通过jquery将html和css插入相应的div容器中.
>将下面的jquery转换为纯javascript,但没有观察到正面的变化.

JAVASCRIPT / AJAX

function vote(type) {
    $.get('PHP/core/voting_system_function.PHP',{vote:type},function(data) {
    $('#votes').html(data.votes_sum);
    $('#progress').css('width',data.progress);
    },'json');
}

HTML

>按钮onclick事件将数据提供给我的投票函数中的参数,然后将其发送到{vote:type}然后发送到我的PHP文件.这允许我做几次检查,看看点击是“好”还是“坏”,并在我的数据库中相应地减去或添加数据.
> #votes和#progress

<div id="quality_meter">
    <div id="progress" style="width:<?PHP echo $progress ?>"></div>
</div>
<div id='votes'><?PHP echo $votes_sum ?></div>

>与数据库的连接是正确的,可通过require读取.
>该脚本的工作原理是假设用户实际登录,否则他们无法访问该页面.如您所见,我正在使用两个会话变量.
>正如您所看到的,我正在检查以查看已单击的按钮并进行相应查询.
>代码的最后一位通过关联数组返回一个json对象,其中您看到的变量存储的数据是votes_sum和progress.我使用json_encode返回我的值的json表示.

@R_403_323@

当你说在第二次点击之前你没有收到回复时,你的意思是投票div中的“votes_sum”没有用最新的投票更新吗?

这样做的原因是你在调用vote_system()函数之前计算$votes_sum值,这是更新投票数,然后在voting_system()之后将$votes_sum – 未更改 – 移动到$output数组.

原文链接:https://www.f2er.com/ajax/453716.html

猜你在找的Ajax相关文章