php - Laravel 中的 AJAX 函数未将表单数据发布到控制器
问题描述
我在 Laravel 有一个表单,用户可以在其中购买产品。我试图在不刷新页面的情况下动态实现这一点。我可以调用 AJAX 函数,但它没有将数据发布到控制器,我需要帮助。控制器中的所有东西都工作得很好,只是数据没有发送给它。
这是HTML表单
<form class="buy-product-form" id="{{$product->id}}" action="/UoE/buy-product/{{$product->id}}" method="POST">
{{csrf_field()}}
<button class="pull-right btn btn-primary">BUY NOW</button>
</form>
这是我的 AJAX 函数
$(document).ready(function(){
$('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(url);
}
});
}));
});
这是控制器中的前几行
public function buyProduct($university_code, $product_id){
$player = Player::where('user_id', Auth::user()->id)->first();
$product = Product::where('id', $product_id)->first();
$totalPrice = $product->quantity_available * $product->price;
解决方案
我刚刚经历了在 Laravel 中通过 AJAX 发布的令人头疼的问题。我有与你类似的代码,但它不起作用。我所做的一些更改:
<form>
标签没有任何动作。
<form id="contact-form" class="main-form">
<button>
标签:
<button class="btn btn-primary submit-button" type="button">Submit</button>
AJAX 调用:
$(document).ready(function()
{
$(".submit-button").click(function(e){
form_data = $("form").serialize()
$.ajax({
url: "/contact",
type: "POST",
data: form_data,
success: function(data)
{
if ($.isEmptyObject(data.error))
{
handleSuccess(data.success);
}
else
{
handleError(data.error);
}
}
});
});
});
推荐阅读
- reactjs - 如何在使用 reactjs 构建的 jest Shallow 测试中修复组件变量的类型推断?
- java - DDB 中复合范围键的 Java 注释
- getstream-io - 使用 Node js 客户端 (GetStream.io) 的空更新频道请求
- gtk - 使用 vala 编程语言,你能检测到其他应用程序何时全屏或最大化,并暂停自己的程序吗?
- css - 为什么这个 CSS 选择器没有返回任何结果?
- mysql - 为什么查询集合名称,在新 pod 启动后变慢
- swift - Streamchat.io:访问用户的团队
- java - 为什么 Apache Tika 将 jar 文件的 mimetype 检测为 application/zip 而不是 application/java-archive?
- typescript - 如何将输入类型对象从 Pact(打字稿)传递到 GraphQL 突变
- tensorflow - 当我将填充设置为 1 时,ZeroPadding2D 填充两次