我是从ajax到控制器/方法的POST数据,但是当ajax命中该方法时面临302重定向,但仍然显示302错误..如果我直接从url命中ajax方法并返回任何有效的方法,但是如果我调用ajax ()使用ajax函数将其重定向到登录视图。为什么?
控制器
public function ajax(Request $request){
return 1;}
路线
Route::group(array('module'=>'Guest','namespace' =>
'App\Modules\Guest\Controllers'), function() {
Route::post('ajax','GuestController@ajax')->name('ajax');
}
脚本:
$.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });
$(document).ready(function(){
// Load more data
$('.load-more').click(function(){
var row = Number($('#row').val());
var allcount = Number($('#all').val());
var rowperpage = 3;
row = row + rowperpage;
if(row <= allcount){
$("#row").val(row);
$.ajax({
url: "{{url('GuestController/ajax')}}",
type: 'post',
datatype: 'JSON',
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
data: {row:row},
success: function(data){
alert(data);
}
});
}else{
console.log('if is not working');
}
});
});
应该点击ajax()方法。
答案 0 :(得分:0)
您要在此处设置路线的名称:->name('ajax');
,并且可以使用 route()函数并传递名称来调用该路线。
更改您的Ajax网址以使用路由名称
示例:url: "{{ route('ajax') }}",
还将错误功能(如成功功能)添加到您的ajax脚本中:
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('Some Error');
}
您的ajax函数应返回JSON,因此您的函数应如下所示:
public function ajax(Request $request){
return response()->json(1);
}
答案 1 :(得分:0)
添加“ X-Requested-With”,“ XMLHttpRequest”。这尤其出于安全性考虑,因为它可以防止CSRF攻击,因为未经服务器通过CORS的同意,此标头无法添加到AJAX请求跨域中。
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
}
});