Ajax没有使用Laravel 5.5

时间:2018-02-09 17:21:47

标签: javascript jquery ajax laravel

我刚刚开始学习Laravel 5.5来探索更多"高级"框架。我曾经使用Codeigniter而且很喜欢它。现在我正在实现一个小的CRUD功能,它工作正常。现在我正在尝试使用Jquery AJAX,因此它不必刷新。我之前使用过Jigery AJax上的codeigniter项目。现在,当我使用Laravel进行尝试时,它确实无法正常工作。我检查了很多参考文献,但我不确定为什么它没有成功。 我正在尝试将它实现到删除功能,如果我有这个功能,我确定我可以完成剩下的工作。

问题:

  1. 当我尝试删除它时,它会重定向到' json'视图。我认为那是因为return response ()->json ($post);但是项目删除了。
  2. 当我检查开发者控制台时,没有发出AJAX请求。我认为AJAX没有被调用,它只是直接进入表单的行为。
  3. 我希望如何

    1. AJAX的工作原理。无需刷新页面。
    2. 控制器

          public function destroy($id)
      {
          $post = Post::find($id);
          if (auth()->user()->id !== $post->user_id){
            return redirect ('/posts')->with('error', 'Unauthorized page');
          }
          $post->delete();
          return response ()->json ($post);
      }
      

      路线

      Route::resource('posts','PostsController');
      

      查看

      {!!Form::open(['action'=>['PostsController@destroy', $post->id], 'method'=>'POST', 'class'=>''])!!}
                                  {{Form::hidden('_method', 'DELETE')}}
                                  {{Form::button('Delete', ['type' => 'submit', 'class' => 'btn btn-danger delete','id' => 'delete', 'data-id' => $post->id ] )}}
                                {!!Form::close()!!}
      

      JS

        <script type="text/javascript">
      $(document).ready(function(){
        $(".delete").on('click',function(event){
          var id = $(this).attr('data-id');
          alert(id);
          $.ajax({
            url: "posts/"+id,
            type: "DELETE",
            success: function(){
              alert("DELETED");
            }
          });
        });
      });
        </script>
      

      非常感谢你的朋友!

1 个答案:

答案 0 :(得分:0)

问题是你在开始你的REST电话之前提交表格,所以你的休息电话永远不会下车,但页面重新加载,因为表格已经提交,然后你显示你的json从您的控制器返回。

<强>解决方案

在刀片视图中删除Form。然后更新ajax:

$(document).ready(function() {
   var id = {!! $post->id !!};
   $.ajax({
      url: "posts/"+id,
      type: "DELETE",
      contentType: 'application/json',
      success: function(data) {
         console.log(data);
         alert("DELETED");
      }
   });
});