循环使用ajax和控制器(laravel)以使用不同的ID和令牌多次发布到端点

时间:2019-06-07 17:23:52

标签: php ajax laravel

我正在使用带有表单数据的laravel,一个ajax调用,然后是一个将消息发布到多个端点的控制器,我不确定如何处理循环结构。

我正在呼叫一个接受页面ID,令牌和消息的端点,但是我有多个页面ID和令牌,因此,当用户键入消息并点击提交时,我需要将其发布到所有页面,如下所示:

$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)

在加载带有表单的刀片时,我已经加载了所有页面ID和访问令牌,因此当用户提交时,我需要循环调用每个调用,而我不确定该怎么做这个

刀片:

<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 个答案:

答案 0 :(得分:1)

您可以在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";
       }
  });
});

注意,我也跟踪了诺言。您不希望在成功回调中留下重定向,否则页面可能会在重新启动或完成之前重新加载。