如何使用laravel中javascript的post方法将数据传递给控制器


How to Pass data to controller using post method of javascript in laravel

我想将数据从View传递给Controller,并附上一个变量,指示我需要在控制器上执行什么

这是查看代码函数addUpdateData(data)

{
    alert(data);
    $(function(){
      $.ajax({
        method : "POST",
        url: "welcome/addupdate",        
        data: {id: data},        
        success : function(response)
        {
          alert(response);
        }
      });
    });
}
<input type="submit" id="add" class="btn btn-primary" onclick="addUpdateData(id)" value="Add"></button>

以下是routes.php 的代码

Route::post('welcome/addupdate','FormController@addUpdateData');

以下是控制器的代码

public function addUpdateData(Request $req)
    {
        $id = $req['data'];
        return $id;
}

我想在带有数据变量的控制器上接收已发布的数据,在那里我将获得是否添加或更新数据。。

我得到了方法不允许的错误我不知道我错过了什么!!!

请帮助

你快到家了。您的控制器出现错误。它应该看起来像:

public function addUpdateData($id, Request $req)
    {
        $input = $req->all();
        return $id;
}

您的路线:

Route::post('welcome/addupdate/{id}','FormController@addUpdateData');

这是因为您没有使用关键字data传递数据,而是直接定义了js对象。最好使用$.post方法,如下所示:

$(function(){
  $.post("welcome/addupdate/" . data, $('form').serialize(), function(response) {
      alert(response);
    }
  });
});

我觉得比较清楚。

不幸的是,也许您忘记给Post提供@CSRF字段作为令牌。使用@CSRF刀片,Laravel将生成令牌