【问题标题】:Can not pass data to laravel controller from ajax无法从 ajax 将数据传递给 laravel 控制器
【发布时间】:2019-02-06 11:46:52
【问题描述】:

我在这个问题上停留了两天。我没有找到任何一位使用 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>

这是控制器代码 DB 没有获取数据。

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

}

【问题讨论】:

  • on('submit',on('#submit'?应该是on('submit',
  • 您是否遇到任何错误?
  • 你错过了:$post->save();在控制器的末尾

标签: jquery ajax laravel-5 controller


【解决方案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-&gt;save();控制器端

【讨论】:

    【解决方案2】:

    请使用 $("form").on('submit', function(event){}); 而不是 $("form").on('#submit', function(event){});

    【讨论】:

      【解决方案3】:

      更新脚本

      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();
      }
      

      【讨论】:

      • 你是对的,但 db 没有获取数据。我在控制器中有一个新的修改。public function addpost(Request $request){ $data=array(); $data['title'] = $request-&gt;title; $data['body'] = $request-&gt;body; Post::insert(array('title'=&gt;$data['title'],'body'=&gt;$data['body'])); }
      • 试试这个public function addpost(Request $request){ $post = new Post(); $post-&gt;title = $request-&gt;title; $post-&gt;body = $request-&gt;body; $post-&gt;save(); }
      • 你有Post模特吗?
      • 我已经更新了我的 javascript 代码。请检查更新后的代码。
      猜你喜欢
      • 1970-01-01
      • 2014-12-08
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      相关资源
      最近更新 更多