使用Laravel 5.6在我的应用程序中尝试使用ajax请求时,我发现ajax请求未触发。
我的控制器代码
class AjaxController extends Controller
{
function index(Request $request)
{
$msg = "Sample Messgae";
return response()->json(['msg' => $msg)]);
}
}
路线
web.php
Route::post('/message','AjaxController@index');
Route::get('/sample','UserRedirectController@ajaxRedirect');
视图
<input type="text" name="ajax" id="ajax">
<input type="text" name="_token" value="{{csrf_token()}}" id="token" hidden>
<button id="save" onclick="ajaxRequestFun();">Show</button>
<span id="cont"></span>
最后是脚本
<script>
$(document).ready(function(){
$.ajaxSetup({
headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
});
});
functon ajaxRequestFun()
{
$.ajax({
type : 'POST',
url : '/message',
data : {'_token': {{csrf_token()}} },
success:function(res){
alert("success");
}
});
}
</script>
答案 0 :(得分:0)
终于找到了解决办法, 我刚刚将meta标签添加到了view head标签中,就像。
<meta name="token" content="{{csrf_token()}}">
然后在JavaScript端形成要发送的数据,
var pass= {'_token':$('meta[name="token"]').attr('content'),
'MessageContent': document.getElementById("message").value,
};
并通常使用我创建的 data:参数作为变量 pass 启动ajax调用, 我的ajax代码是这样的,
$.ajax({
type:'POST',
url:'{{url("/message")}}',
datatype:'json',
data: pass,
success:function(data){
$("#bubble").html(data);
}
}).fail(function(jqXHR, textStatus, error){
alert(jqXHR.responseText);
});
我发现重要的是
通过csrf_token()键使用meta标签
其他框架与其他框架一样