Передача данных из представления Laravel 7 в контроллер через Ajax - PullRequest
0 голосов
/ 06 мая 2020

Мне нужно передать только одно значение из представления в контроллер, используя Ajax (в View home.blade. php). Все решения предназначены для Laravel 5, и это бесполезно.

Ajax из home.blade. php:

$datee="hello";

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

 $.ajax({
    type        : 'POST',
    url         : "insert2",
    contentType: "text",
    data:      datee ,
    dataType: 'json'
  });

Маршрут:

Route::post('/insert2/{datee}', 'EditContdroller@show1');
Route::get('/home', 'HomeController@index')->name('home');

И метод EditController:

  public function show1(Request $request){

                         $data= $request->datee;
//some work with $data...
                         return $json_Value;

    }

Я получаю сообщение об ошибке 404 ... / insert2 not found. У вас есть какие-нибудь идеи, пожалуйста?

1 Ответ

1 голос
/ 06 мая 2020
Route::post('/insert2/{datee}', 'EditContdroller@show1');

url:"insert2",

Ваш почтовый маршрут требует дополнительного параметра, но вы запрашиваете его без параметра

Это должен быть url: "insert2 / something"

Теперь в контроллере переданное "something" будет стать переменной {datee}

Если вы хотите сделать параметр необязательным, вы должны добавить вопросительный знак к {datee}, сделав его {datee?}, тогда ваш запрос AJAX должен работать: (я добавил '?' вопросительный знак на дату)

Route::post('/insert2/{datee?}', 'EditContdroller@show1');

Вы проходите:

data: datee,

Это не работает так.

Чтобы передать дату, я бы рекомендовал сделать это:

Удалите часть {datee}

Route::post('/insert2', 'EditContdroller@show1');

В запросе AJAX измените ваши данные следующим образом:

data: { datee: datee },

В вашем контроллере значение datee выглядит следующим образом:

$datee = $request->input('datee');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...