Ajax laravel 5.2不起作用

时间:2016-07-12 02:36:03

标签: ajax laravel-5.2

我想用laravel5.2用这段代码开发简单的ajax

此oneline_help.php视图

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/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::get('/ajax','front@support');
Route::post('/getmsg','Hello@index');

这是前面的@support

public function support() 
{
    return view('online_help', array('title' => 'Welcome', 'description' => '', 'page' => 'online_help','subscribe'=>"",'brands' => $this->brands));
}

这是Hallo @index控制器

public function index(){
       echo"i in in hello index";
      $msg = "This is a simple message.";
      return response()->json(array('msg'=> $msg), 200);
   }

按钮出现但是点击它时,文字不会改变。 请告诉我为什么以及如何解决它。

1 个答案:

答案 0 :(得分:0)

以下是我的AJAX工作示例....

您不需要在ajax请求中添加token,将其设置为全局,因此每次ajax请求都会自动添加CSRF token

HTML Head 部分添加此元标记

<meta name="csrf-token" content="<?php echo csrf_token() ?>">

然后在Javascript标记中添加此代码。这将在每个ajax请求中添加CSRF令牌。

注意这个必需的jquery文件应该包含在你的页面中。一旦包括从文件中调用此方法。

<script type="text/javascript">
    var csrf_token   =   $('meta[name="csrf-token"]').attr('content');
    $.ajaxSetup({
       headers: {"X-CSRF-TOKEN": csrf_token}
    });
</script>

我修改了你的方法....

  <script>
     function getMessage(){
        $.ajax({
           type:'POST',
           url:'/getmsg',
           data:'_token = <?php echo csrf_token() ?>', //remove this line
           dataType:'json', // you skipped this line
           beforeSend:function(){
              alert('loading....'); //this will show loading alert
           },
           success:function(data){
              $("#msg").html(data.msg);
           },
           error:function(){
              alert('loading error...')
           }
        });
     }
  </script>