Эквивалент обратного представления ('path', compact ('data1', 'data2', 'data3')) laravel в ajax success - PullRequest
0 голосов
/ 30 мая 2018

Как я могу получить эквивалент

return view('path',compact('data1', 'data2', 'data3' )) 

в случае успеха ajax.Я рассмотрел другие подобные вопросы в Laravel, некоторые из них предлагают метод render, который на самом деле не является редиректом.

Раньше я передавал данные как:

return view('path',compact('data1', 'data2', 'data3' ))

Но теперь я обновил метод загрузки файлов в метод ajax, но я застрял на том, как передавать другие параметры с точно такой жесостав.Поэтому мне не нужно обновлять другой код.

Я хочу иметь эквивалентный код, чтобы мне не нужно было обновлять какой-либо код при использовании этих данных, переданных отсюда.

Ajax

`$ (документ) .ready (function () {$ ('form'). Submit (function (event) {

        event.preventDefault();
        var formData = new FormData($(this)[0]);
        $.ajax({
            headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') },
            url: "{{url('admin/voter/sub/storecsv')}}",
            data: formData,
            type: 'post',
            cache: false,
            xhr: function() {
                var xhr = new window.XMLHttpRequest();
                $("#csv_uploading").modal('show');
                xhr.upload.addEventListener("progress", function(evt) {
                    if (evt.lengthComputable) {
                        var percentComplete = evt.loaded / evt.total;
                        percentComplete = parseInt(percentComplete * 100);
                        $('.uploadProgressBar').attr('aria-valuenow',percentComplete).css('width',percentComplete + '%').text(percentComplete + '%');
                        if (percentComplete === 100) {
                            $("#csv_uploading").modal('hide');
                        }

                    }
                }, false);

                return xhr;
            },
            processData: false,
            contentType: false,

            success:function(data){
                if(data.success === true){
                    console.log(data);
                }
            }
        });

    });
});

`

HTML

<form action="{{url('admin/voter/sub/storecsv')}}" class="form-horizontal file-upload" id="file_upload" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<input required="" type="file" name="import_file" id="import_file" />
<button class="btn btn-success btn-sm" id="upload_csv" disabled="true" type="submit">Import CSV or Excel File</button>
</form>

Итак, если есть какой-нибудь приятный и простой метод, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 30 мая 2018

в той же функции, вам нужно проверить, был ли запрос ajax.

public function method(){
   if(request()->ajax()){
      return Response([
         'data1' => $data1,
         'data2' => $data2,
         'data3' => $data3,
      ]);
   }
}

Не забудьте включить use Response; Это вернет ответ на метод ajax.

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