无法将数据从Ajax传递到laravel控制器

时间:2019-02-06 11:46:52

标签: jquery ajax laravel-5 controller

我在这个问题上停留了两天。我没有一位专家使用ajax laravel。我无法从ajax将数据发送到控制器文件。如果有人请帮助我。我会很感激的。

这是路线

Route::get('/',"PostController@index");
Route::post('addpost','PostController@addpost');

这是表格

<form>
                {{csrf_field()}}
                    <label for = "title">Title</label>
                    <input type = "text" name = "title"><br>
                    <label for = "body">Body</label>
                    <textarea row= "6" name = "body"></textarea><br>
                    <button class = "btn btn-info" name = "submit" id= "add" type = "submit" value = "submit">Add</button>
         </form>

这里是jquery代码。

    <script>
        $(document).ready(function(){
            $("#add_new_post").hide();
            $("#newpost").click(function(){
                $("#add_new_post").show();
                $(this).hide();
            });
            $("form").on('#submit', function(event){
                event.preventDefault();
                $.ajax({
                    type : 'POST',
                    url  : "{{url('/addpost')}}",
                    data :{
                        '_token': $('input[name=_token]').val(),
                        'title': $('input[name = title]').val(),
                        'body' : $('input[name = body]').val(),
                    },
                    success: function(data){
                    alert("Test Completed")
              window.location.href = "{{('/home')}}";
                    },
                });
            });
        });
    </script>

这是控制器代码 数据库未获取数据。

    public function addpost(Request $request){
    $data=array();
    $data['title'] = $request->title;
    $data['body'] = $request->body;
    Post::insert(array('title'=>$data['title'],'body'=>$data['body']));

}

3 个答案:

答案 0 :(得分:0)

更新的脚本

on('submit',on('#submit'?应该是on('submit',

 <script>
        $(document).ready(function(){
            $("#add_new_post").hide();
            $("#newpost").click(function(){
                $("#add_new_post").show();
                $(this).hide();
            });
            $(document).on('click', '#add', function(event){
                event.preventDefault();
                $.ajax({
                    type : 'POST',
                    url  : "{{url('/addpost')}}",
                    data :{
                        '_token': $('input[name=_token]').val(),
                        'title': $('input[name = title]').val(),
                        'body' : $('input[name = body]').val(),
                    },
                    success: function(data){
                    alert("Test Completed")
              window.location.href = "{{('/home')}}";
                    },
                });
            });
        });
    </script>

控制器

public function addpost(Request $request){ 
        $post = new Post();
        $post->title = $request->title;
        $post->body = $request->body;
        $post->save();
}

答案 1 :(得分:0)

请使用$(“ form”)。on('submit',function(event){}); 代替$(“ form”)。on('#submit',function(event){});

答案 2 :(得分:-1)

您的活动有误:

$("form").on('#submit', function(event){});

使用:

$("form").on('submit', function(event){});

$(document).on('click',"#app",function(e){e.preventDefault();//prevent submit事件}); 或使用

<button type="button"> & $(document).on('click',"#app",function(){});

还添加:$post->save();控制器的末端