Рендеринг Rails мешает успеху AJAX - PullRequest
0 голосов
/ 02 июля 2019

Итак, у меня есть два вложенных AJAX-запроса к одному контроллеру.

$(this).click(function(){
            $('#test_pass_image').show();
            $.ajax({
                type: 'POST',
                beforeSend: function(request) {
                     request.setRequestHeader('X-CSRF-Token', $( 'meta[name="csrf-token"]' ).attr( 'content' ));
                    },
                dataType:'json',
                data: {
                    'project_id':"<%= @project_id %>",
                    'test_id' : "<%= @test_id %>"
                },
                url: encodeURI('/test_pass'),
                success: function(){
                    alert('success');
                    $.ajax({
                        type: 'POST',
                        beforeSend: function(request) {
                         request.setRequestHeader('X-CSRF-Token', $( 'meta[name="csrf-token"]' ).attr( 'content' ));
                        },
                        dataType: 'json',
                        data: {
                            'project_id':"<%= @project_id %>",
                            'test_id' : "<%= @test_id %>"
                        },
                        url: encodeURI('/test_next_load/'),
                        success: function(){}
                    })
                }
            })  
        });

Теперь, Когда первый POST (/ test_pass) не имеет View, появляется предупреждение ('success') и выполняется второй запрос POST.

Started POST "/test_pass" for ::1 at 2019-07-02 18:37:01 +0200
Processing by TestsController#test_pass as JSON
  Parameters: {"project_id"=>"1", "test_id"=>"1"}
No template found for TestsController#test_pass, rendering head :no_content
Completed 204 No Content in 207ms (ActiveRecord: 179.7ms)


Started POST "/test_next_load/" for ::1 at 2019-07-02 18:37:04 +0200
Processing by TestsController#test_next_load as JSON
  Parameters: {"project_id"=>"1", "test_id"=>"1"}

Rendering tests/test_next_load.js.erb
  Rendered tests/test_next_load.js.erb (0.4ms)
Completed 200 OK in 10ms (Views: 2.1ms | ActiveRecord: 1.0ms)

Однако test_next_load.js.erb не рендерится, несмотря на то, что говорит Пума. На странице не происходит никаких изменений. И нет ошибки JS в браузере

Однако, если первый POST действительно имеет вид, например, предупреждение ( 'первый'),

Он не отображает первое и не попадает в условие успеха, и, очевидно, также не отображает второе.

Я нашел несколько странных заголовков ответа

X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 31f62df6-3e33-448b-baae-365a3ecf3bdd
X-Runtime: 0.127960
X-XSS-Protection: 1; mode=block

Я полагаю, что это отчасти проблема. Как мне их сбросить? (Noopen)

Однако я не заинтересован в их изменении, поскольку они могут маскировать некоторые плохие конфигурации или ошибки, видя странную ситуацию рендеринга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...