草庐IT

javascript - 完成百分比 (jQuery + php)

coder 2024-04-07 原文

我想让完成百分比(进程栏)显示处理了多少数据。 这是我的 PHP 代码:

$w->connect();
try {
    $w->loginWithPassword($password);
}
catch (exception $e) {
    return false;
}
foreach($targets as $target)
{
    $w->sendMessage($target, $text);
}
return true;

foreach 是我想显示发送了多少消息的进程。 现在在 js 中我有:

  function send_message(){
  var msg =  {msg_receptions:$('#msg_receptions').val(),msg_from:$('#msg_from').val(),msg_text:    $('#msg_text').val()};
$.post(
         site_url('ajax/send_message'),
         msg,
         function(data, status){

         }
       );
  }

我不知道如何让进程栏显示完成百分比!

最佳答案

根据评论进行编辑。

如果您想跟踪已上传了多少消息,那么您需要在当前 session 中执行轮询系统(您可以使用套接字来执行此操作,但这会变得越来越复杂)。

在 PHP 中,启动一个 session (在加载第一页之前)并创建 session 变量来存储进度。在您发布的页面中,使用相同的 session ,将进度设置为 0,每次 SendMessage 循环时,使用最新进度更新该变量。

在 JS 中,使用 AJAX 提交 PHP 请求(因此 HTML 保留),然后使用 setTimeout() 对您需要使用相同 session 编写的新文件执行第二个 AJAX 请求,获取更新的进度数据并将其返回 - 这将与初始答案相同。当您收到响应时,再次执行 setTimeout 并重复(不要使用 setInterval,因为这样做会使服务器崩溃)。当初始请求返回时,终止超时。

最后的说明:使用 jQueryUI 是多余的;因此,只有在您有其他用途时才使用它。否则就是 10 行代码(如下)。

希望能帮助/回答问题。

** 以前的答案 **

最简单的方法是将两个 div 相互包裹起来。

您的样式表应包含:

<style>
    .progressBar {
        position: relative;
        border: 1px solid black;  /* Style as you see fit */
    }
    .progressIndicator {
        position: absolute;
        left: 0;
        top: 0;
        width: 0;
        height: 10%;
        background: #f00;  /* Style as you see fit */
    }
</style>

您的 HTML 应包含

<html>
    <div class="progressBar">
        <div class="progressIndicator">
        </div>
    </div>
</html>

您的 javascript (jQuery) 响应应包含

$('.progressIndicator').css({width: parseInt(data, 10) + "%"});

(其中数据是返回值,介于 0 和 100 之间)

关于javascript - 完成百分比 (jQuery + php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794596/

有关javascript - 完成百分比 (jQuery + php)的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. 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来发送

  3. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  4. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  5. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  6. 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

  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. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

  9. += 的 Ruby 方法 - 2

    有没有办法让Ruby能够做这样的事情?classPlane@moved=0@x=0defx+=(v)#thisiserror@x+=v@moved+=1enddefto_s"moved#{@moved}times,currentxis#{@x}"endendplane=Plane.newplane.x+=5plane.x+=10putsplane.to_s#moved2times,currentxis15 最佳答案 您不能在Ruby中覆盖复合赋值运算符。任务在内部处理。您应该覆盖+,而不是+=。plane.a+=b与plane.a=

  10. Ruby:行 "m = Hash.new {|h,k| h[k] = []}"完成了什么而 "Hash.new"没有完成? - 2

    一边学习thisRailscast我从Rack中看到了以下源代码:defself.middleware@middleware||=beginm=Hash.new{|h,k|h[k]=[]}m["deployment"].concat[[Rack::ContentLength],[Rack::Chunked],logging_middleware]m["development"].concatm["deployment"]+[[Rack::ShowExceptions],[Rack::Lint]]mendend我的问题是关于第三行。什么是传递block{|h,k|h[k]=[]}到Has

随机推荐