我正在做基本的订阅表单,尝试使用Ajax发布请求。 由于我是Ajax的新手,因此我搜索了一些有关此问题的内容,但没有成功,即使这可能是一个简单的修复。
问题是,当我提交表单时,它会引发错误:
MethodNotAllowedHttpException没有消息
View.blade:
1a
路线
//Ajax
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$("#subscribeform").submit(function (e) {
e.preventDefault();
var emailval = $('#subscriber').val();
console.log(emailval);
if(emailval !== "") {
$.ajax({
cache: false,
url: '/subscribing',
type: 'POST',
dataType: 'json',
data: {
email:emailval
},
success: function (data) {
console.log(data);
}
});
}
});
</script>
//Form
<form id="subscribeform" method="post">
<input type="text" name="subscriber" id="subscriber" placeholder=" email@example.com">
<input type="submit" value="Submit">
</form>
控制器
Route::post('/subscribing', 'SubsController@store');
命名空间很好,我确定,那真的可能是一个什么问题?
答案 0 :(得分:0)
将“type”更改为“method”。
您也忘记了AJAX调用中的CSRF令牌。将其添加为参数:
formdata={'numeroOriginario': '1234'},
刀片会将其插入您的js。
答案 1 :(得分:0)
根据以上答案,我认为是因为csrf_token
,解决你的问题试试这样,
您需要按照以下文档中的建议使用ajaxSetup
,
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
并在模板上添加此内容,
<meta name="csrf-token" content="{{ csrf_token() }}">
或者只是将其添加到表单中,
<meta name="csrf-token" content="{{ csrf_token() }}" />
有关详细信息,请参阅doc。
答案 2 :(得分:0)
在SubsController.php
use App\Subscriber;
Ajax
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$("#subscribeform").submit(function (e) {
e.preventDefault();
var emailval = $('#subscriber').val();
console.log(emailval);
if(emailval !== "") {
$.ajax({
cache: false,
url: '/subscribing',
type: 'POST',
dataType: 'json',
data: {
_token: '{!! csrf_token() !!}',
email:emailval
},
success: function (data) {
console.log(data);
}
});
}
});
模型`Subscriber.php'
class Subscriber extends Model
{
protected $fillable = ['email'];
protected $table = 'subscriber';
}
并在标题中添加以下代码:
<meta name="csrf-token" content="{{ csrf_token() }}">
答案 3 :(得分:-1)
根据Jquery docs,ajax设置中请求方法的关键是“方法”,而不是“类型”,这意味着您的请求默认为GET。因此,不允许使用Method,如异常中所述。