Цикл в ajax и контроллере (laravel) для отправки в конечную точку несколько раз с разными идентификаторами и токенами - PullRequest
0 голосов
/ 07 июня 2019

Я использую laravel с данными формы, вызов ajax, а затем контроллер, который отправит сообщение нескольким конечным точкам, и я не уверен, что делать с циклической структурой.

Я вызываю конечную точку, которая принимает идентификатор страницы, токен и сообщение, но у меня несколько идентификаторов страниц и токенов, поэтому, когда пользователь вводит сообщение и нажимает кнопку отправки, мне нужно отправить его на все страницы следующим образом:

$post = $pagePost->post($id . '/feed/', $data, $accesstoken);

Итак, гипотетически для каждой страницы мы будем делать это для 4 страниц:

post(1 . '/feed/', $data, 1234)
post(2 . '/feed/', $data, 12345)
post(3 . '/feed/', $data, 12346)
post(4 . '/feed/', $data, 12347)

К моменту загрузки блэйда с формой у меня загружены все идентификаторы страниц и токены доступа, поэтому, когда пользователь отправляет запрос, мне нужно сделать вызов в цикле для каждого из них, и я просто не знаю, как это сделать. Это

клинка:

<div class="uk-grid uk-container-center ">
    @foreach($response['data'] as $page)
        <h2>{{$page['id']}}</h2>
        <h4>{{$page['access_token']}}</h4>
    @endforeach
</div>

$("#postNow").click(function(e){ 
e.preventDefault();

var post = $("#Post").val();
    $.ajax({

       type:'POST',
       url:'save',
       data:{post:post},
        _token: '{{ csrf_token() }}',
       success:function(data){  
            window.location.href = "/library";
       }
    });
});

Контроллер:

public function Save(Request $request)
{
    $Post = $request->post;
    $data = array('post' => $post);

    //not sure where I need to do a foreach here
    $post = $pagePost->post($id . '/feed/', $data, $accesstoken);
}

1 Ответ

1 голос
/ 07 июня 2019

Вы можете просто повторно использовать свой цикл в части JavaScript:

var promises = [];
var promise;

@foreach($response['data'] as $page)
    promise = $.ajax({
       type:'POST',
       url:'{{$page['id']}}' + '/feed/' + '{{$page['access_token']}}',
       data:{post:post},
        _token: '{{ csrf_token() }}'
    });
    promises.push(promise);
@endforeach
$.when.apply($, promises).then(function() {
    $.ajax({
       type:'POST',
       url:'save',
       data:{post:post},
       _token: '{{ csrf_token() }}',
       success:function(data){  
          window.location.href = "/library";
       }
  });
});

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

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