我有一个选择框,当每个项目都被选中时,会发送一个ajax请求。 但是我的代码不起作用。我的状态为404,并且此错误显示在控制台中
exception: "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException", file: "F:\\source\\boiler\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php", line: 179, …
我的路线:
Route::group(['namespace' => 'BuyCrypto' , 'prefix' => 'crypto'], function() {
Route::post('/calculateBuyAmount' , [BuyCryptoController::class , 'calculateAmount'])->name('calculate.amount');
});
ajax代码:
$("select#user_select_crypto").change(function(e) {
$('#calculat_user_buy').block({
message: '<i class="icon-spinner4 spinner"></i>',
overlayCSS: {
backgroundColor: '#fff',
opacity: 0.8,
cursor: 'wait'
},
css: {
border: 0,
padding: 0,
backgroundColor: 'transparent'
}
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
e.preventDefault();
$.ajax({
url: "panel/crypto/calculateBuyAmount",
dataType: 'json',
data: {
user_select_crypto: $("input[name=user_select_crypto]").val(),
user_value_request: $("input[name=user_value_request]").val(),
},
success: function(result) {
console.log(result)
},
error: function(result) {
console.log(result)
},
});
});
出什么问题了?
答案 0 :(得分:0)
在这种情况下,最好使用命名路由,因为您要为路由命名。
$.ajax({
url: "{{ route('calculate.amount') }}", // use your name route here
type : 'POST', // need to add your request type post
dataType: 'json',
data: {
user_select_crypto: $("input[name=user_select_crypto]").val(),
user_value_request: $("input[name=user_value_request]").val(),
},
success: function(result) {
console.log(result)
},
error: function(result) {
console.log(result)
},
});
答案 1 :(得分:0)
这是因为laravel无法获得您给予路线的完整URL。您必须给出正确的路线。为此,您可以使用如下所示的命名路由。
url: "{{ route('calculate.amount') }}",
,或者如果您使用的是JavaScript文件,并且只能使用/
斜杠作为URL,则不能使用Blade。一切都会正常进行。发生在发布请求中。
您可以提供如下网址
url: "/panel/crypto/calculateBuyAmount",
已更新
现在您面对methodNotAllowedException
,因为现在您发送的是get请求,因为您没有在ajax端提及您正在执行post
请求。默认情况下,ajax将发送一个get
请求。所以你需要告诉ajax使用post方法。像下面的type: "POST"
$.ajax({
url: "/panel/crypto/calculateBuyAmount",
dataType: 'json',
type : 'POST'
data: {
user_select_crypto: $("input[name=user_select_crypto]").val(),
user_value_request: $("input[name=user_value_request]").val(),
},
success: function(result) {
console.log(result)
},
error: function(result) {
console.log(result)
},
});