Javascript 使用Laravel的Ajax不起作用
我使用的是Laravel,我试图使用AJAX在数据库中存储信息,但我遇到了这个错误Javascript 使用Laravel的Ajax不起作用,javascript,jquery,ajax,laravel,csrf,Javascript,Jquery,Ajax,Laravel,Csrf,我使用的是Laravel,我试图使用AJAX在数据库中存储信息,但我遇到了这个错误 dev.js:4 POST http://127.0.0.1:8000/developer/work-links/addLink 419 (unknown status) 我试了很多次,但要么是419错误,要么是500错误 这是我的路线 Route::group(['middleware'=>'developer', 'web'], function () { Route::get('devel
dev.js:4 POST http://127.0.0.1:8000/developer/work-links/addLink 419 (unknown status)
我试了很多次,但要么是419错误,要么是500错误
这是我的路线
Route::group(['middleware'=>'developer', 'web'], function () {
Route::get('developer', 'DeveloperController@index')->name('developer');
Route::get('developer/work-progress', 'DeveloperController@progress')->name('progress');
Route::get('developer/work-links', 'DeveloperController@projectLinks')->name('projectLinks');
Route::post('developer/work-links/addLink','DeveloperController@addLink');
});
这是DeveloperController
public function addLink(Request $request) {
$data = new ProjectLink();
$data->order_id = $request->order_id;
$data->link_title = $request->link_title;
$data->link_description = $request->link_description;
$data->link = $request->link;
$data->save();
return response()->json($data);
}
这是刀片锉
@section('content')
<div class="row">
<div class="col-sm-6">
<div class="card-box">
<div class="form-group">
<input class="form-control" type="text" name="link_title" placeholder="title">
</div>
<div class="form-group">
<input class="form-control" type="text" name="link" placeholder="link">
</div>
<div class="form-group">
<textarea class="form-control" name="link_description" id="" cols="30" rows="10"></textarea>
</div>
<div class="form-group">
<input type="hidden" name="order_id" value="{{$order->id}}">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary" id="addLink">Create Link</button>
</div>
</div>
</div>
<div class="col-sm-5 offset-1">
<div class="card-box ribbon-box">
<div class="ribbon ribbon-primary">Your Work Links</div>
<div class="clearfix"></div>
<div class="inbox-widget">
{{--<a href="#">--}}
@if(count($links) != 0)
@foreach($links as $link)
<div>
<h4 >{{$link->link_title}}</h4>
<p id="add_here"></p>
<p class="inbox-item-text">{{$link->link_description}}</p>
<p class="inbox-item-date">
<a href="{{$link->link}}" target="_blank">
<button type="button" class="btn btn-icon btn-sm waves-effect waves-light btn-success "> Click Me </button>
</a>
</p>
</div>
{{--</a>--}}
@endforeach
@else
<div class="inbox-item">
<h1 class="display-4 text-muted" style="padding-top: inherit">No Links For Now</h1>
</div>
@endif
</div>
</div>
</div>
</div>
@stop
@节(“内容”)
创建链接
你的工作链接
{{--
{{----}}
@endforeach
@否则
暂时没有链接
@恩迪夫
@停止
我也在head部分包含了这个meta标签
<meta name="csrf-token" content="{{ csrf_token() }}">
下面是AJAX脚本
<script type="text/javascript">
var token = $('meta[name="csrf-token"]').attr('content');
$("#addLink").click(function () {
$.ajax({
type: 'POST',
url: 'work-links/addLink',
dataType: 'json',
data: {
'link_title': $('input[name=link_title]').val(),
'link_description': $('textarea[name=link_description]').val(),
'link': $('input[name=link]').val(),
'order_id': $('input[name=order_id]').val(),
},
header: {"X-CSRF-Token": token},
success: function(data) {
console.log("Success!");
}
});
});
</script>
var-token=$('meta[name=“csrf-token”]”)。attr('content');
$(“#添加链接”)。单击(函数(){
$.ajax({
键入:“POST”,
url:“工作链接/addLink”,
数据类型:“json”,
数据:{
'link_title':$('input[name=link_title]')。val(),
'link_description':$('textarea[name=link_description]')。val(),
'link':$('input[name=link]')。val(),
'order_id':$('input[name=order_id]')。val(),
},
标头:{“X-CSRF-Token”:Token},
成功:功能(数据){
console.log(“成功!”);
}
});
});
看起来这可能是您的csrf
标题
请将此添加到您的head
标签中,位于CSRF
元标签下方:
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
$.ajaxSetup({
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
}
});
你可以在chrome开发工具的
网络选项卡下查看发送的标题和数据。我在网络选项卡链接中获取这些数据\u title:gfgfgfg链接:gffgf订单\u id:1
但为什么我没有获取链接_description@MohanSharmalink\u description
不是输入
,而是textarea
因此将$('input[name=link\u description]').val()
更改为$('textarea[name=link\u description]').val()
是的,我修复了它,但仍然获得419状态error@MohanSharma您能否验证正在发送的头文件是否完全是大写的:X-CSRF-TOKEN
在您的chrome开发工具中