Jquery 我对Laravel7中的ajax有问题
对于select输入,我有以下ajax代码:Jquery 我对Laravel7中的ajax有问题,jquery,ajax,laravel,laravel-7,selectinput,Jquery,Ajax,Laravel,Laravel 7,Selectinput,对于select输入,我有以下ajax代码: $("#franchise").change(function() { //alert( $( "#franchise" ).val() ); var f = $( "#franchise" ).val(); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-t
$("#franchise").change(function() {
//alert( $( "#franchise" ).val() );
var f = $( "#franchise" ).val();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'POST',
url : "{{ route('ajax.series') }}",
data : ({franchise : f}),
dataType: 'JSON',
success: function(response) {
$("#series").html('');
$("#series").append(response);
}
});
});
我也有以下的路线:
Route::post('ajax/series', 'AjaxController@series')->name('ajax.series');
我在AjaxController中有以下代码:
public function series(Request $request)
{
$id = $request->input('franchise');//I get the id data from select input
$series = Serie::where('franchise_id',$id)->get();
return view('ajax.series', ['series' => $series]);
}
但是,当我执行select事件时,什么也没有发生
我知道
change
事件是有效的,因为我只使用警报检查它,所以问题可能是ajax。有什么问题吗?只需在“文档准备”功能中移动下面的代码即可
$("#franchise").change(function() {
//alert( $( "#franchise" ).val() );
var f = $( "#franchise" ).val();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'POST',
url : 'ajax/series',
data : ({franchise : f}),
dataType: 'JSON',
success: function(response) {
$("#series").html('');
$("#series").append(response);
}
});
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
在公共布局文件中添加{{csrf_field()}}
确保您的js代码位于同一文件中,而不是外部js,然后使用下面的js代码
$("#franchise").change(function() {
//alert( $( "#franchise" ).val() );
var f = $( "#franchise" ).val();
$.ajax({
type: 'POST',
url : "{{ route('ajax.series') }}",
data : ({franchise : f}),
dataType: 'JSON',
success: function(response) {
$("#series").html('');
$("#series").append(response);
}
});
});
@sandy是对的,这肯定会解决您的问题,而且您还可以在browser developer工具中检查ajax调用,以查看这些调用实际上正在影响controller的方法
对于chrome,按Ctrl+Shift+I组合键
调试愉快 您的控制器和路由代码非常好,但是您的javaScript代码在这里有一个小问题,在laravel中,不需要为CSRF令牌添加ajax头字段,您可以添加CSRF令牌作为ajax的主体,就像您添加了特许权一样,代码将非常好地工作
我已经为您编写了代码,让您尝试一下
$('#franchise').change(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "{{ route('ajax.series') }}",
data: {
franchise: $(this).val(),
_token: $('meta[name="csrf-token"]').attr('content'),
},
success: function(response) {
$("#series").html('').append(response);
}
});
});