Как ajax хранить multipart / form-data в laravel 5.6? - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь отправить форму multipart / form-data через ajax, я проверил многие посты, связанные с этой проблемой, но ни одно из исправлений не помогло мне, так что, вероятно, я просто что-то упустил, надеюсь, вы поможете я, ребята!

Вот мой HTML-код формы, я отрисовываю его в div в моем представлении индекса, и у меня уже есть поле csrf в заголовке моего макета:

<form method="POST" id="createtc" action="{{ route('Tiemposcompensatorios.store') }}" enctype="multipart/form-data" class="form-inline border border-light p-4">
        <input id="empleado_id" name="empleado_id" type="hidden" value="">
        <div class="form-row">
            {!! csrf_field() !!}
            <div class="col">
                <input type="text" class="form-control" name="descripcion" value="{{ old('descripcion') }}" placeholder="Descripcion">
                <small class="form-text text-muted mb-4">
                    Ingresar solo texto
                </small>
                {!! $errors->first('descripcion','<span class=error>:message</span>')!!}
            </div>
            <div class="col">
                <input type="number" class="form-control" name="horas" id="horas" value="{{ old('horas') }}" placeholder="Horas">
                <small class="form-text text-muted mb-4">
                    Ingresar solo numeros
                </small>
                {!! $errors->first('horas','<span class=error>:message</span>')!!}
            </div>
            <div class="col">
                <input id="desde" name="desde" class="form-control datec" type="text" value="{{ old('desde') }}" placeholder="Desde" />
                <small class="form-text text-muted mb-4">
                    Formato AÑO-MES-DIA
                </small>
                {!! $errors->first('desde','<span class=error>:message</span>')!!}
            </div>
            <div class="col">
                <input id="hasta" name="hasta" class="form-control datec" type="text" value="{{ old('hasta') }}" placeholder="Hasta" />
                <small class="form-text text-muted mb-4">
                    Formato AÑO-MES-DIA
                </small>
                {!! $errors->first('hasta','<span class=error>:message</span>')!!}
            </div>
            <div class="col">
                <label for="autorizacion">Horas Autorizadas:</label>
                <input type="file" class="form-control-file" id="autorizacion" name="autorizacion">
            </div>
            <div class="col-auto">
                <button class="btn btn-info my-4 btn-block" type="submit">Guardar</button>
            </div>
        </div>
    </form>

Вот мой код JS:

    $('body').on('submit', '#createtc', function(e) {
        e.preventDefault();
        var formData = new FormData($(this)[0]);
        setStore(formData);
    });
function setStore(data) {
    $.ajax({
        type: 'POST',
        url : "/Tiemposcompensatorios/store",
        data: data,
        contentType: false,
        processData: false,
    }).done(function (data) {
        $('.forms').html(data);  
    }).fail(function () {
        alert('Empleado could not be stored.');
    });
}

Вот мой код контроллера:

public function store(CreateTiemposcompensatorioRequest $request)
{
    $request->autorizacion->store('tiempos');
    Tiemposcompensatorio::create($request->all());
    $tiemposcompensatorios = Tiemposcompensatorio::where('empleado_id','=',$request->empleado_id)->paginate(5);
    if ($request->ajax()) {
        return view('tiemposcompensatorios.list', compact('tiemposcompensatorios'))->render();
    }
}

Я получаю ошибку метода, не разрешенную для 'POST' в консоли браузера, затем изображение ошибки в консоли:

Ошибка POST

1 Ответ

0 голосов
/ 13 ноября 2018

Я только что решил, потому что я использую контроллер ресурсов, URL для действия хранилища - просто 'Tiemposcompensatorios', а не 'Tiemposcompensatorios / store'.

function setStore(data) {
$.ajax({
    type: 'POST',
    url : "Tiemposcompensatorios",
    data: data,
    contentType: false,
    processData: false,
}).done(function (data) {
    $('.forms').html(data);  
}).fail(function () {
    alert('Empleado could not be stored.');
});

}

Спасибо за вашу помощь, ребята!

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