草庐IT

php - AJAX/PHP 投票系统 : Content not updating on first click

coder 2024-04-06 原文

测试环境: Windows 8 使用工具 XAMMP . PHP 和 Mysql 是最新的。

我的知识:起动机。

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

我试过的:检查我的开发人员工具 network analysis每次点击我都会得到一个状态 200 和正确的值。使用我的 Firefox 时 DOM inspector view我看到了一些不寻常的东西:仅在第一次点击时 #votes标记为橙色,可能表示它已受到影响。但是,只有在第二次尝试使用同一个按钮时,两个 div,#votes and #progress ,除了更新的值外,还被标记为橙色。所以我希望它在第二次点击时会出现,但不会在第一次点击时出现。然后我刷新了我的页面并尝试了其他一些东西。我点击了“坏”,这次第二次点击“好”,更新 DOM 中的值不好。似乎整个过程是分开的,并且不会同时发生,这就是我推测的原因:

  • 点击1:向php发送数据。
  • 点击2:从php中获取数据并显示在DOM上。

  • PHP 代码本身与我的数据库和 HTML(如果设置为提交)一起工作得非常好,所以我不认为服务器端有任何问题。与数据库的连接已设置。我的 session 工作得很好。没有错误。

    我的控制台显示 0 javascript 错误。

    测试 1: I commented out my entire php code and set up a testing variable with a simple string并相应地更改了我下面代码中的值。令我惊讶的是,点击它立即获取数据并显示我的测试变量的内容。

    测试 2:: I removed the php codes from the two div tags您将在下面看到。它们充当占位符,在任何 AJAX 发生之前显示当前值。我删除了那些,并且在第一次单击时获得更新,因为容器首先是空的。虽然,在第二次点击和好坏之间切换碰巧再次变得一团糟。

    测试 2::将 jquery 和我的 AJAX 脚本放在 head 中的文档也没有完成这项工作(只是为了安全起见)。之前是在 </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
  • buttons onclick event将数据提供给我的投票函数中的参数,然后将其发送到 {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 读取。
  • 该脚本假设用户实际登录,否则他们无法访问该页面。如您所见,我使用了两个 session 变量。
  • 如您所见,我正在检查哪个按钮被点击并进行相应的查询。
  • 代码的最后一点通过关联数组返回一个 json 对象,其中包含您在那里看到的变量存储的数据 votes_sumprogress .我用 json_encode返回我的值的 json 表示。
  • 最佳答案

    当您说在第二次点击之前您没有收到响应时,您是指 votes 中的“votes_sum”吗? div 没有更新最新的投票?

    这样做的原因是您计算了 $votes_sum在您调用 voting_system() 之前的值更新投票计数的函数,然后在 voting_system() 之后你动了$votes_sum - 不变 - 到 $output大批。

    关于php - AJAX/PHP 投票系统 : Content not updating on first click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32349516/

    有关php - AJAX/PHP 投票系统 : Content not updating on first click的更多相关文章

    1. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

      rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

    2. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

        电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

    3. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

      在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

    4. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

      需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

    5. jquery - 如何将 AJAX 变量从 jQuery 传递到他们的 Controller ? - 2

      我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam

    6. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

      因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

    7. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

      我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

    8. ruby - 以毫秒为单位获取当前系统时间 - 2

      在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:

    9. ruby-on-rails - 如何构建复杂的 Rails 系统 - 2

      关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和

    10. ruby-on-rails - Rails 3,在RAILS_ROOT上方显示来自本地文件系统的jpg图片 - 2

      我正在尝试找出一种方法来显示来自不在RAILS_ROOT下(在RedHat或Ubuntu环境中)的已安装文件系统的图像。我不想使用符号链接(symboliclink),因为这个应用程序实际上是通过Tomcat部署的,而当我关闭Tomcat时,Tomcat会尝试跟随符号链接(symboliclink)并删除挂载中的所有图像。由于这些文件的数量和大小,将图像放在public/images下也不是一种选择。我查看了send_file,但它只会显示一张图片。我需要在一个格式良好的页面中显示6个请求的图像。由于膨胀,我宁愿不使用Base64编码,但我不知道如何将图像数据与呈现的页面一起传递下去。

    随机推荐