Laravel 5.4AJAX表单post路由404错误
Laravel 5.4 AJAX form post routing 404 error
我正在处理使用 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)
我不确定我做错了什么。
您需要更改此行:
ajax_url = 'sold/sold',
通过这个:
ajax_url = form.attr('action'),
;)
您可以使用php artisan route:list
命令列出可用的路线。如果您正在为对象使用资源,那么保存已售对象的路径名称将为 sold.store
。
如果您不了解路由名称,请不要在表单操作属性中使用 route() 函数,请使用 url("sold") 和 method="post",
但在您的 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') !}
我正在处理使用 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)
我不确定我做错了什么。
您需要更改此行:
ajax_url = 'sold/sold',
通过这个:
ajax_url = form.attr('action'),
;)
您可以使用php artisan route:list
命令列出可用的路线。如果您正在为对象使用资源,那么保存已售对象的路径名称将为 sold.store
。
如果您不了解路由名称,请不要在表单操作属性中使用 route() 函数,请使用 url("sold") 和 method="post",
但在您的 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') !}