将数据从Javascript传递到Laravel控制器


passing data from Javascript to Laravel controller

当我运行以下代码时,我得到了MethodNotAllowedHttpException的错误:

<h1>Temp Form</h1>
<form method="post" action="" role="form">
  <input type="hidden" name="_token" value="{{ csrf_token() }}">
  <div class="panel panel-default ">
    <div class="container">
      <div class="panel-body">
        <div class="form-group">
          <label for="firstName">First Name *</label>
          <input name="fname" type="text" class="form-control" id="firstName" placeholder="Enter First Name" required>
        </div>
        <div class="form-group">
          <label for="lastName">Last Name *</label>
          <input name="lname" type="text" class="form-control" id="lastName" placeholder="Enter Last Name" required>
        </div>
        <div class="form-group">
          <label for="qualification">Qualification *</label>
          <input name="qualification" type="text" class="form-control" id="qualification" placeholder="BE, MCA, MBA Etc." required>
        </div>
        <div class="form-group">
          <label for="emailAddress">Email address *</label>
          <input name="email" type="email" class="form-control" id="emailAddress" placeholder="Enter Email" required>
        </div>
        <div class="form-group">
          <label for="contactmessage">Message</label>
          <textarea name="desc" type="text" class="form-control" id="contactmessage" placeholder="Message" rows="2"></textarea>
        </div>
        <input type="submit" id="add" class="btn btn-primary" onclick="addUpdateData(id)" value="Add"></button>
      </div>
    </div>
  </div>
</form>

routes.php:代码

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

控制器代码:

 public function addUpdateData(Request $req)
 {
    $id = $req->input('id');
    if($id=="add")
    {
        $bs = new Basicusers;
        $bs->fname = $req->fname;
        $bs->lname = $req->lname;
        $bs->qualification = $req->qualification;
        $bs->email = $req->email;
        $bs->desc = $req->desc;
        $bs->save();
        return "Data Successfully Added";
    }
  }

我想要的是,当用户点击添加按钮时,变量data中的值会被传递,在控制器上,我会检查变量的值,如果是add,我会执行添加操作。

同时,如果用户点击下面表单中提供的edit按钮,该行将填充表单元素,添加按钮将更改为更新按钮,变量data的值现在将为update,我想执行更新操作。。。

使用POST方法传递数据时出错此外,我不知道如何使用POST方法传递数据。。

对于GET方法,我使用$id = Input::get('id');方法及其工作

这里是JavaScript函数:

function addUpdateData(data) {
  $(function() {
    $.ajax({
      method: "post",
      url: "welcome/addupdate",
      data: {
        id: data
      },
      success: function(response) {
        alert(response);
      }
    });
  });
}

尝试在您的ajax请求中使用绝对路径:url:"/welcome/addupdate"

为表单(例如#form)添加一些ID,并将表单中的序列化数据传递给addUpdateData函数。

$('#add').on('click', function(e) {
  e.preventDefault();
  var data = $('#form').serialize();
  addUpdateData(data);
});

还将一个输入字段作为隐藏类型添加到表单中,该表单应具有现有资源的ID。然后在控制器操作中,您可以获得一个传递数据的数组,如果资源的ID存在,则执行更新。如果没有,则创建它们。