首页 > 解决方案 > 等价于 ajax 成功中 laravel 的 return view('path',compact('data1', 'data2', 'data3' ))

问题描述

我怎样才能得到相当于

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

在ajax成功。我在 Laravel 中经历了其他类似的问题,其中一些建议渲染方法实际上不是重定向。

以前,我将数据传递为:

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

但是,现在我已经更新了将文件上传到 ajax 方法的方法,但是我被困在如何传递具有完全相同结构的其他参数上。所以,我不需要更新其他代码。

我希望有等效的代码,这样我在使用从这里传递的这些数据时不需要更新任何代码。

阿贾克斯

` $(document).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>

所以,如果有任何甜蜜而简单的方法,请告诉我。

标签: javascriptjqueryajaxlaravel

解决方案


在同一个函数中,您需要检查请求是否为 ajax。

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

不要忘记包含use Response;这将返回对 ajax 方法的响应。


推荐阅读