Laravel 5.5 с ajax показывает 500 внутренняя ошибка сервера - PullRequest
0 голосов
/ 19 мая 2018

Я отправил вызов Ajax, который показал сообщение об ошибке:

500 Внутренняя ошибка сервера

Я просмотрел несколько сообщений по Stackoverflow и понял, что долженпрошел токен csrfТаким образом, я вставил следующий код в раздел head (как раз перед закрытием тега head).

<meta name="csrf_token" content="{{ csrf_token() }}">

Кроме того, вот коды Ajax, которые я вызвал;

$.ajax({
                        headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content')
                        },
                        url: "adminUser/exportselected/1",
                        type:'POST',
                        data: {selected:selected, selectedField:selectedField},
                        success: function(data) { 
                            window.location = data.path;
                            if($.isEmptyObject(data.error)){
                                //alert(data);
                            }else{
                                //alert(data.error);
                            }
                        }
                    });

Как видно из вышесказанного, я также передал токен с заголовками.Что еще мне нужно сделать?

Мой маршрут (web.php) выглядит так:

Route::post('adminUser/exportselected/{page?}', 'Administrator\AdminUserController@exportSelected');

Ниже приведен код моего контроллера;

публичная функция exportSelected ($)страница, запрос $ запрос) {

if (\Request::isMethod('post')) {
        $adminUserDataExcelSelected = UserAdmin::getAdminUserListExcelSelected($request->selectedField, $request->selected)->get();
        $excelName = "Admin-Users".Carbon::now();
        $path = public_path('export/'.$excelName);

        ob_end_clean();
        ob_start();
        Excel::create($excelName, function($excel) use($adminUserDataExcelSelected) {
        $excel->sheet('Sheet 1', function($sheet) use($adminUserDataExcelSelected) {
        $sheet->fromArray($adminUserDataExcelSelected);
        });
        })->store('xlsx', public_path('exports'));
        ob_flush();
        //dd(url('/'));
        $creatingPath = url('/')."/exports/".$excelName.".xlsx";
        //return response()->download(public_path('a.xlsx'));
        return response()->json(['path' => $creatingPath]);
        //return response()->download($path);
    }

}

Ответы [ 2 ]

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

на самом деле вы должны проверить консоль браузера на предмет того, что происходит на сервере.Ларавел csrfTokenMissMatch Бросок Laravel 419 post error, а не 500 code.так что проверьте ваш контроллер exportSelected() метод на предмет того, что не так.Вы успешно проверили csrf.ошибка 500 исходит из метода контроллера, а не из промежуточного программного обеспечения laravel csrf.

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

Вы должны добавить dataType к вашему ajax, а также убрать заголовки из вашего кода ajax ниже функции, вот пример кода

..... .on(click, function (){
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content') },

$.ajax({ 

url: "adminUser/exportselected/1",
 type:'POST', data: {selected:selected,
 selectedField:selectedField},

dataType : "json",

 success: function(data) { window.location = data.path; if($.isEmptyObject(data.error)){ //alert(data); }else{ //alert(data.error); } } });

Ps: я с телефоном, мой код может быть немного запутанным,прости за это.

...