Laravel 5 AJAX帖子不能工作

时间:2016-10-26 18:42:05

标签: php jquery ajax laravel laravel-5

我是Laravel的新人。我尝试在我的项目上创建一个ajax post函数。但我的以下代码不起作用。当我单击按钮时,它没有响应任何内容,但我在教程网站上创建了该功能。我在谷歌搜索但没有得到任何建议或适当的答案。拜托,有人帮我解决这个问题。任何建议将不胜感激。我英文不太好。所以,请不要介意。谢谢。哦,我忘记提到我使用的是Laravel 5.

查看文件:message.php

    <html>
       <head>
          <title>Ajax Example</title>

          <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
          </script>

          <script>
             function getMessage(){
                $.ajax({
                   type:'POST',
                   url:'/getmsg',
                   data:'_token = <?php echo csrf_token() ?>',
                   success:function(data){
                      $("#msg").html(data.msg);
                   }
                });
             }
          </script>
       </head>

       <body>
          <div id = 'msg'>This message will be replaced using Ajax. 
             Click the button to replace the message.</div>
          <?php
             echo Form::button('Replace Message',['onClick'=>'getMessage()']);
          ?>
       </body>

    </html>

/* route file: */

    Route::get('ajax',function(){
       return view('message');
    });
    Route::post('/getmsg','AjaxController@index');

/* controller file: AjaxController.php */

class AjaxController extends Controller {
   public function index(){
      $msg = "This is a simple message.";
      return response()->json(array('msg'=> $msg), 200);
   }
}

2 个答案:

答案 0 :(得分:2)

为了便于使用,您可以告诉jQuery始终传递当前的csrf标记。您可以通过两个步骤实现此目的:

在您的头脑中添加元标记

<meta name="csrf-token" content="{{ csrf_token() }}">

设置您的ajax

$.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});

完成这些步骤后,无需在各个ajax请求中包含令牌。

注意:docs非常清楚地解释了这一点。

答案 1 :(得分:0)

请按照以下步骤操作:

<强> route.php

 Route::post('/getmsg','AjaxController@index');

<强> AjaxController.php

class AjaxController extends Controller {
   public function index(){
      $msg = "This is a simple message.";
      return response()->json([
            'msg'=> $msg
          ], 200);
   }
}

内部View

<html>
   <head>
      <title>Ajax Example</title>
      <meta name="_token" content="{{ csrf_token() }}" />  

      <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
      </script>
   </head>

   <body>
      <div id = 'msg'>This message will be replaced using Ajax. 
         Click the button to replace the message.</div>

      {{ Form::button('Replace Message',['onClick'=>'getMessage()']) }}

      <script>
         function getMessage(){
            var _token = $('meta[name="_token"]').attr('content');

            $.ajax({
               type:'POST',
               url:'/getmsg',
               data: {_token: _token},
               success:function(data){
                  $("#msg").html(data.msg);
               },
               error: function(data){
                    console.log(data);
               }
            });
         }
      </script>

   </body>

</html>

希望这有助于你