我有条路
Route::post('/subscription/save','SubscriptionController@save')->name('sub.save');这是唯一没有重复的路径,我是从这个代码中通过Ajax提交的。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('.btn-ok').click(function(){
$.ajax({
type: 'POST',
data: {
'card_type':$('#card_type').val(),
'card_number':$('#card_number').val(),
'expiry':$('#expiry').val(),
'cvv':$('#cvv').val(),
'name':$('#name').val(),
'surname':$('#surname').val(),
'address1':$('#address1').val(),
'address2':$('#address2').val(),
'province':$('#province').val(),
'city':$('#city').val(),
'country':$('#country').val(),
'box_id':$('#sub_box_id').val()
} ,
url: "{{route('sub.save')}}",
success: function(data){
console.log(data);
}
});
$('#myModal').modal('hide');
}); 如果我在控制台中记录数据变量,它看起来很好。这是我的控制器功能
public function save(Request $request)
{
$Subscription=new Subscription;
return $request;
}我尝试了返回请求,但是我再次得到这个405错误
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message我做错了什么?
========================我更新了文章,我在标题中使用CSRF
发布于 2018-06-21 07:16:21
Mudassir --您正在收到此错误--要么您试图在.js文件中使用刀片语法.js
要么使用绝对路径,要么在blade file中使用此语法。
$('.btn-ok').click(function(){
$.ajax({
type: 'POST',
data: {
'card_type':$('#card_type').val(),
'card_number':$('#card_number').val(),
'expiry':$('#expiry').val(),
'cvv':$('#cvv').val(),
'name':$('#name').val(),
'surname':$('#surname').val(),
'address1':$('#address1').val(),
'address2':$('#address2').val(),
'province':$('#province').val(),
'city':$('#city').val(),
'country':$('#country').val(),
'box_id':$('#sub_box_id').val()
} ,
url: "/subscription/save",
success: function(data){
console.log(data);
}
});
$('#myModal').modal('hide');
}); 其次,您正在使用POST方法,确保在请求中添加CSRF令牌。
希望这能有所帮助。
发布于 2018-06-21 07:14:39
如果它的POST方法,Laravel需要防止跨站点请求伪造的CSRF值
您可以简单地在AJAX中添加_token。
var token = "{{ csrf_token() }}";
'_token':token,最终代码
var token = "{{ csrf_token() }}";
$.ajax({
type: 'POST',
data: {
'_token':token,
'card_type':$('#card_type').val(),
'card_number':$('#card_number').val(),
'expiry':$('#expiry').val(),
'cvv':$('#cvv').val(),
'name':$('#name').val(),
'surname':$('#surname').val(),
'address1':$('#address1').val(),
'address2':$('#address2').val(),
'province':$('#province').val(),
'city':$('#city').val(),
'country':$('#country').val(),
'box_id':$('#sub_box_id').val()
} ,
url: "{{route('sub.save')}}",
success: function(data){
console.log(data);
}
});发布于 2018-06-23 07:30:50
请将/subscription/save添加到$except数组中VerifyCsrfToken中间件中,然后不需要定义csrf令牌。
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
"/subscription/save"
];
}https://stackoverflow.com/questions/50961973
复制相似问题