[英]Laravel Ajax posting data into the database
This is my index.php
<div class="container">
<h1>Drink A Coffee today</h1> <hr>
<h2>Coffee Orders</h2>
<ul id="orders">
<p><li class="highlight"></li></p>
<p><li class="highlight"></li></p>
</ul>
<h4>Add a Coffee Order</h4>
{!! Form::open(['url' => 'index', 'method' => 'POST']) !!}
<div class="form-group" role="form">
<p>
<label for="name">Name:</label>
<input id="name" type="text" name="name" class="form-control">
</p>
<p>
<label for="drink">Drink:</label>
<input id="drink" type="text" name="drink" class="form-control">
</p>
<p>
<button id="add-order" class="btn btn-default" type="submit">Add!</button>
</p>
</div>
{!! Form::close() !!}
</div>
下面是我的控制器
public function makeOrder() {
$post = Request::all();
if (Request::ajax()) {
$order = new Order;
$order->name = $post['name'];
$order->drink = $post['drink'];
$order->save();
$response = array(
'status' => 'success',
'msg' => 'Option created successfully',
);
return Response::json( $response );
}
}
//Below is my Route
Route::post('index', 'MakeOrderController@makeOrder');
然后是我的Ajax脚本
$(document).ready(function() {
$('#add-order').click(function(e) {
e. preventDefault();
//setting variables based on the input fields
var inputName = $('input[name="name"]').val();
var inputDrink = $('input[name="drink"]').val();
var token = $('input[name="_token"]').val();
var data = {name:inputName, drink:inputDrink, token:token};
var request = $.ajax({
url: "index",
type: "POST",
data: data,
dataType:"html"
});
request.done(function( msg ) {
var response = JSON.parse(msg);
console.log(response.msg);
});
request.fail(function( jqXHR, textStatus ) {
console.log( "Request failed: " + textStatus );
});
});
});
但是,无论何时我尝试提交,什么都没有发生,当我检查元素时,我会收到此错误“无法加载资源:服务器以状态500(内部服务器错误)响应为请求失败:错误”
嗯,我想我现在看到了。 在您的AJAX数据中,您正在发送“令牌”,但是Laravel希望将此参数命名为“ _token”。
您只需在表单上使用jQuery的serialize()函数,而不是将每个字段都作为变量检索,就可以使自己更轻松。 例如:
var data = $(this).closest('form').serialize();
代替var inputName,var inputDrink等
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.