AJAX / PHP投票系统:第一次点击时内容未更新
测试环境:使用XAMMP工具的
Windows 8.
PHP和Mysql是最新的.
我的知识:初学者. 问题:我无法在第一次点击后立即获得更新的内容,仅在第二次点击之后,考虑到我的小投票系统有两种按钮,这可能变得非常讨厌.是的,我说了很多不是很多:) 我做了什么:检查我的开发人员工具网络分析,我得到一个状态200,每次点击都有正确的值.当我使用我的firefox DOM检查器视图时,我看到了一些不寻常的东西:在第一次单击时,只有#votes标记为橙色,可能表示它已受到影响.但是,只有在同一个按钮上的第二次尝试时,除了更新的值之外,两个div(#votes和#progress)都标记为橙色.所以我希望它会在第二次点击时发生,但不会在第一次点击时发生.然后我刷新了我的页面并尝试了其他的东西.我点击“坏”,这次第二次点击落在“好”上,坏了更新DOM中的值.似乎整个过程是分裂的并且不会同时发生,这就是为什么我推测: >单击1:将数据发送到php. PHP代码本身与我的数据库和HTML(如果设置为提交)一起工作完全正常,所以我不认为服务器端有任何问题.已设置与数据库的连接.我的会议完美无缺.没有错误. 我的控制台显示0个javascript错误. 测试1:我注释掉了我的整个PHP代码并使用一个简单的字符串设置了一个测试变量,并相应地更改了我的代码中的值.令我惊讶的是,点击它后立即获取数据并显示我的测试变量的内容. 测试2 ::我从下面将看到的两个div标签中删除了php代码.它们充当占位符,在任何AJAX发生之前显示当前值.我删除了那些,我在第一次点击时获得了更新,因为容器首先是空的.虽然,在第二次点击和好坏之间的切换恰好是一个烂摊子. 测试2 ::将jquery和我的AJAX脚本放在文档的头部也没有完成任务(只是为了安全起见).之前它是在< / body>之前标签 >我通过名为data的回调参数访问返回的json对象,然后通过jquery将html和css插入相应的div容器中. 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文件.这允许我做几次检查,看看点击是“好”还是“坏”,并在我的数据库中相应地减去或添加数据. <div id="quality_meter"> <div id="progress" style="width:<?php echo $progress ?>"></div> </div> <div id='votes'><?php echo $votes_sum ?></div> >与数据库的连接是正确的,可通过require读取. 解决方法
当你说在第二次点击之前你没有收到回复时,你的意思是投票div中的“votes_sum”没有用最新的投票更新吗?
这样做的原因是你在调用vote_system()函数之前计算$votes_sum值,这是更新投票数,然后在voting_system()之后将$votes_sum – 未更改 – 移动到$output数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |