Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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
Javascript RubyonRails-如何使控制器使用ajax同时执行2个操作?_Javascript_Ruby On Rails_Ruby_Ajax_Controller - Fatal编程技术网

Javascript RubyonRails-如何使控制器使用ajax同时执行2个操作?

Javascript RubyonRails-如何使控制器使用ajax同时执行2个操作?,javascript,ruby-on-rails,ruby,ajax,controller,Javascript,Ruby On Rails,Ruby,Ajax,Controller,我在开发环境中使用ajax为同一控制器调用两个不同的操作。 在一个动作中,我更新数据库的过程非常缓慢。 在另一个动作中,我想得到更新进度条的百分比。 我可以看到两个都在执行, 问题是,第二个动作正在等待第一个动作完成,然后自己执行,它应该每秒执行一次,以获得实际的百分比。 rails可以并行执行两个操作吗?还是Webrick的问题 我按照建议试过用彪马 但它仍在等待第一次行动, 下面是ajax代码调用 $(document).ready(function() { $(':button').cl

我在开发环境中使用ajax为同一控制器调用两个不同的操作。 在一个动作中,我更新数据库的过程非常缓慢。 在另一个动作中,我想得到更新进度条的百分比。 我可以看到两个都在执行, 问题是,第二个动作正在等待第一个动作完成,然后自己执行,它应该每秒执行一次,以获得实际的百分比。 rails可以并行执行两个操作吗?还是Webrick的问题


我按照建议试过用彪马 但它仍在等待第一次行动, 下面是ajax代码调用

$(document).ready(function() {
$(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: '/quotes/upload',  //Server script to process data
        type: 'POST',
        //Ajax events
        beforeSend: progress,
        success: completeHandler,
        error: function(ts) { alert(ts.responseText) },
        // Form data
        data: formData,
        //Options to tell jQuery not to process data or worry about content-type.
        cache: false,
        contentType: false,
        processData: false
    });
});
});

function progress() {
$.ajax({
    url: '/quotes/status.json',
    dataType: "JSON"
}).success(function (percentual) {
    if (percentual >= '95') {
        location.reload();
    } else {
        var $bar = $('.bar');
        $bar.width(percentual+"%");
        setInterval(progress,800);
    }
});
}
这是控制台打印输出:

Started GET "/quotes/status.json" for 127.0.0.1 at 2014-09-21 10:23:38 -0300
Processing by QuotesController#status as JSON

 percentual => 0 Completed 200 OK in 4ms (Views: 0.6ms | ActiveRecord: 0.0ms)


Started POST "/quotes/upload" for 127.0.0.1 at 2014-09-21 10:23:38 -0300
Processing by QuotesController#upload as */*
Parameters: {"quotes"=>#<ActionDispatch::Http::UploadedFile:0x00000001b980b0    @tempfile=#<Tempfile:/tmp/RackMultipart20140921-5849-otvxky>, @original_filename="HIST_XXX.TXT", @content_type="text/plain", @headers="Content-Disposition: form-data; name=\"quotes\"; filename=\"HIST_XXX.TXT\"\r\nContent-Type: text/plain\r\n">}
  Rendered quotes/index.html.erb within layouts/application (0.7ms)
 Completed 200 OK in 10456ms (Views: 170.3ms | ActiveRecord: 0.0ms)


Started GET "/quotes/status.json" for 127.0.0.1 at 2014-09-21 10:23:49 -0300
Processing by QuotesController#status as JSON

 percentual => 100 Completed 200 OK in 3ms (Views: 0.4ms | ActiveRecord: 0.0ms)
2014年9月21日10:23:38-0300开始获取127.0.0.1的“/quotes/status.json” QuotesController处理“状态为JSON” percentual=>0在4ms内完成200 OK(视图:0.6ms |活动记录:0.0ms) 于2014-09-21 10:23:38-0300开始发布127.0.0.1的“报价/上传” 通过QuotesController处理“上载为”*/* 参数:{“引号”=>#} 布局/应用程序中的渲染引号/index.html.erb(0.7ms) 在10456ms内完成200 OK(视图:170.3ms |活动记录:0.0ms) 2014年9月21日10:23:49-0300开始获取127.0.0.1的“/quotes/status.json” QuotesController处理“状态为JSON” percentual=>100在3ms内完成200次OK(视图:0.4ms |活动记录:0.0ms)
正如我所看到的,对于控制台,它只是在上传之前进行第一次调用,然后进行上传,然后在完成后对状态进行第二次调用

你是对的-Webrick一次只处理一个请求。可能是give,也可能是go-它们都处理并发请求

注意:请注意,使用SQLite可能会出现类似的并发问题(特别是在涉及写操作的情况下!)请切换到PostgeSQL或MySQL


使用:

Gemfile

gem 'thin'
gem 'puma'
gem 'unicorn'
当然

bundle install
bundle install
bundle install
然后启动服务器

thin start
rails s puma
unicorn_rails

使用:

Gemfile

gem 'thin'
gem 'puma'
gem 'unicorn'
当然

bundle install
bundle install
bundle install
启动服务器

thin start
rails s puma
unicorn_rails

使用:

Gemfile

gem 'thin'
gem 'puma'
gem 'unicorn'
当然

bundle install
bundle install
bundle install
启动服务器

thin start
rails s puma
unicorn_rails
谢谢你的提示, 我找到了一个解决方案: 将此文件放在development.rb文件中:

config.middleware.delete Rack::Lock
你还必须改变韦德里克。
Puma也能正常工作。

您应该能够发出2个javascript请求。你能把代码贴出来让我看看是怎么回事吗?