【发布时间】:2019-08-09 16:46:07
【问题描述】:
我终于让我的 AJAX 功能正常工作,它正确地将数据发布到控制器。但它仅在发送的数据包含在表单 action-/UoE/buy-product/{{product_id}} 中时才有效。但我只希望表单操作是/UoE/buy-product/,否则我实际上是在发送数据两次。一次在这里,一次在我的 ajax 函数中。
这是我的看法
<form class="buy-product-form" id="{{$product->id}}" action="{{url('/UoE/buy-product')}}" method="POST">
{{csrf_field()}}
<button class="pull-right btn btn-primary">BUY NOW</button>
</form>
这是我的 AJAX 函数
$(document).ready(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('form.buy-product-form').on('submit', (function (e) {
e.preventDefault();
var product_id = $(this).closest("form").attr("id");
$.ajax({
url: $(this).closest("form").attr('action'),
type: 'POST',
data: {'id': product_id},
dataType: 'JSON',
success: function () {
window.alert($(this).closest("form").attr('action'));
}
});
}));
});
这是我的控制器的第一行(这里一切正常)
public function buyProduct(Request $request){
$product_id = $request->id;
这是我的 routes.php 文件
Route::post('/{university_code}/buy-product', 'UserController@buyProduct');
【问题讨论】:
-
在您的路线中将
{university_code}替换为UoE。 -
但这就是在我使用 ajax 之前它已经工作了很长时间的方式。如果我们将来要扩展我们的网站,我需要将其保留为 {university_code}。
-
但是换掉它还能用吗?
-
我试过了还是不行
-
从您的路线看来,您的控制器方法中缺少一个参数。你得到什么错误?使用浏览器开发者控制台的网络选项卡检查错误。