Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет!
В метод update класса FilmController приходит пустой $request (var_dump($request['name'] отдает null),
хотя fd.get('name'), перед отправкой ajax, выдает значение имени.
Даже пробовал руками присваивать переменную:
fd.append('name', 'boo');
Все равно пусто
Подскажите, где туплю?
Есть форма:
<form name="editFilmForm" id="editFilmForm" method="post">
<input type="hidden" name="_method" value="put">
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" id="name" value="{{$film->name}}" required>
</div>
<input type="hidden" name="_token" value="{{ Session::token() }}">
<input type="hidden" name="filmId" value="{{ $film->id }}">
<button type="submit" class="btn btn-default editFilmSubmit">Submit</button>
</form>
Route:
Route::resource('films', 'FilmController');
Controller:
class FilmController extends Controller
{
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
var_dump($request['name ']);die;
}
}
JS:
$('[name="editFilmForm"]').on('submit', function (e) {
var fd= new FormData(this);
var url = '/films/' + $('[name="filmId"]').val();
var token = $('[name="_token"]').val();
fd.append('token', token);
fd.append('_method', 'put');
e.preventDefault();
// команда ниже успешно отдает значение имени
// console.log(fd.get('name'));return false;
$.ajax({
type: 'post',
url: url,
data: fd,
mimeType: "multipart/form-data",
contentType: false,
cache: false,
processData: false,
success: function (data) {
console.log(data);return false;
},
error: function (data) {
console.log(data['responseText']);return false;
}
});
});
Изменено Triggo (14.06.2017 23:26:25)
Не в сети
у тебя не $request['name'] а $request['name ']. пробел в ключе лишний
Не в сети
На js всё можно сделать гораздо проще.
$('#editFilmForm').on('submit', function (e) {
e.preventDefault();
var url = '/films/' + $('[name="filmId"]').val(),
data = $(this).serializeArray();
$.post(url, data, function($response) {
console.log(response);
});
});
Изменено Sergant210 (15.06.2017 08:37:20)
Не в сети
у тебя не $request['name'] а $request['name ']. пробел в ключе лишний
Спасибо! Правда вечером знакомый зашел, увидел пробел )
Не в сети
На js всё можно сделать гораздо проще.
Благодарю, теперь можно будет уменьшить код
Не в сети
Страницы 1