AJAX POST请求在Laravel 5.6中不起作用

时间:2018-08-27 15:51:26

标签: php ajax laravel-5

使用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>

1 个答案:

答案 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标签

其他框架与其他框架一样