Laravel 5.4 AJAX表单路由404错误

时间:2017-07-02 15:32:31

标签: jquery ajax laravel laravel-5.4 laravel-routing

我正在使用AJAX提交表单。 Form之前只使用常规方法而没有AJAX。所有路线都很好,形式正常。现在我发现需要在AJAX函数中提交我的表单。我像往常一样为AJAX提交编写脚本。

这是我的表单脚本:

       <div class="onpage-sold-input">
            {!! Form::open(['url' => route('sold.sold'),'class'=>'contact-form', 'id'=>'search-sold-button','method'=>'POST']) !!}
                {!! Form::text('sold', old('sold'), array('class'=>'form-control', 'placeholder'=>'Qty.')) !!}
                <input type="hidden" name="part_id" value="{{ $inventory->id }}">
                <input type="hidden" name="_token" value="{{ csrf_token() }}">
                {!! Form::button('Sold', ['class' => 'btn btn-sm btn-success', 'id'=>'sold-button','type'=>'submit']) !!}
            {!! Form::close() !!}
        </div>

Hare是AJAX脚本:

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

$('#sold-button').on('click', function (e) {
e.preventDefault();

var form = $('#search-sold-button'),
    data = form.serialize(),
    ajax_url = 'sold/sold',
    alert_section = $('.alert-section');

$.post(ajax_url, data, function (resp) {
    alert_section.fadeIn().find('.alert').html(resp);
    setTimeout(function () {
        alert_section.fadeOut();
    }, 3000)
})
});

这是路线:

Route::post('/sold/sold',['uses'=>'PriceController@sold', 'as'=>'sold.sold']); 

这是我在控制台中遇到的错误:

POST http://localhost/backend_master/public/inventory/sold/sold 404 (Not Found)

我不确定我在这里做错了什么。

2 个答案:

答案 0 :(得分:1)

您需要更改此行:
ajax_url = 'sold/sold',

由此:
ajax_url = form.attr('action'),

答案 1 :(得分:0)

您可以使用php artisan route:list命令列出可用路由。如果您使用资源作为对象,则保存已售出对象的路径名称将为sold.store

如果你不是关于路线名称,那么不要在表格动作属性中使用route()函数,使用url(&#34; sold&#34;)和method =&#34; post&#34; ,

但是在你的ajax代码中做了以下更改

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

    $('#sold-button').on('click', function (e) {
        e.preventDefault();

        var form = $('#search-sold-button'),
        data = form.serialize(),
        ajax_url = {! url('sold/sold' !},
        alert_section = $('.alert-section');

        $.post(ajax_url, data, function (resp) {
        alert_section.fadeIn().find('.alert').html(resp);
        setTimeout(function () {
            alert_section.fadeOut();
        }, 3000)
        })
    });

<强>更改

如果您的路线为sold/sold,请使用{! route('sold/sold')!}{! url('sold/sold') !}