javascript - html表单不向控制器发送ajax请求
问题描述
我正在尝试在添加到购物车表单上使用 ajax。但似乎 html 表单没有发送任何 ajax 请求。当我单击添加到购物车按钮时。它显示一个黑页,因为我在控制器上使用了那个 ajax 检查方法。
控制器
public function addToCart(Request $request){
$product = Product::find($request->product_id);
Cart::add($product->id, $product->title, 1, $product->price);
$response = array(
'status' => 'success',
'msg' => 'Setting created successfully',
);
if($request->ajax())
return \Response::json($response);
}
Javascript - AJAX
$('#add').on('submit', function (e) {
e.preventDefault();
var pid = $('#product_id').val();
var cat = $('#category_id').val();
$.ajax({
type: "POST",
url: host + '/addToCart',
data: {product_id: pid, category_id: cat},
success: function( msg ) {
$("#xx").append("<div>"+msg+"</div>");
}
});
});
HTML 表单
<form id="add" action="{{ route('addToCart') }}" method="POST">
{{csrf_field()}}
<input type="hidden" id="category_id" name="category_id" value="{{ $px->category_id }}">
<input type="hidden" id="product_id" name="product_id" value="{{ $px->id }}">
<input type="submit" value="Add to Cart" class="bg-color-input">
</form>
<div id="xx"></div>
我在哪里弄错了?
解决方案
如果您忘记发送 csrf_token,您可以通过以下方式解决:
<form id="add" action="{{ route('addToCart') }}" method="POST">
{{csrf_field()}}
<input type="hidden" id="category_id" name="category_id" value="{{ $px->category_id }}">
<input type="hidden" id="product_id" name="product_id" value="{{ $px->id }}">
<input type="button" id="submitBtn" value="Add to Cart" class="bg-color-input">
</form>
<div id="xx"></div>
$('document').on('click','#submitBtn',function(){
e.preventDefault();
var pid = $('#product_id').val();
var cat = $('#category_id').val();
$.ajax({
type: "POST",
url: host + '/addToCart',
data: {product_id: pid, category_id: cat,'_token','{{csrf_token()}}'},
success: function( msg ) {
$("#xx").append("<div>"+msg+"</div>");
}
});
});
或者您可以对表单进行序列化:
$('document').on('click','#submitBtn',function(){
e.preventDefault();
$.ajax({
type: "POST",
url: host + '/addToCart',
data:$('#add').serialize(),
success: function( msg ) {
$("#xx").append("<div>"+msg+"</div>");
}
});
});
推荐阅读
- android-emulator - AOSP:无法在 Ubuntu 18.04 上加载模拟器
- c# - 是否可以提供枚举属性?
- r - rstudio 以闪亮和网状崩溃
- python - Plotly:如何使用 go.box 而不是 px.box 对数据进行分组并指定颜色?
- laravel - 带有 Dropzonejs 的 Laravel 没有通过成功回调
- java - 为什么不能从构造函数打印?
- java - Oracle JDK 使用记录
- modal-dialog - 如何在博客上进行模态警告?
- python - 将列添加到熊猫数据框(数字的升序块)
- python - groupby().transform():值的长度与索引的长度不匹配