我正在开发电子商务应用程序购物车。我有一个定价页面,显示多个类别的产品列表和价格。用户可以选择将多个产品添加到购物车(活动购物车显示在页面的右侧)。我正在尝试使用Ajax / jQuery将项目添加到我的购物车。我有一个包裹每个产品的表单,其中包含多个隐藏字段,我想传递给我的函数和控制器。您可以在下面的代码中看到所有这些:
<% foreach (var _category in Model) { %>
<% foreach (var _product in _category.Products)
{ %>
<tr>
<td align="left" valign="top"><% = _product.Description %> (<% = _product.Code %>)</td>
<td valign="top" align="center">$<% = _product.TotalPrice %></td>
<td align="left">
<form id="frmProduct_<%=_product.Code%>">
<input type="button" onclick="JavaScript:addProductToBasket(this.form);" value="+ Add to cart" />
<input type="text" id="hProductCode" value="<% = _product.Code %>" />
<input type="text" id="Text1" value="<% = _product.TotalPrice %>" />
<!--Other hidden fields for passing data -->
</form>
</td>
</tr>
<% } %>
<% } %>
由于我在页面上有多个表单,因此我很难在javascript函数中访问特定表单。处理这种情况的最佳方法是什么?
<script type="text/javascript">
function addProductToBasket(_form) {
alert('Hi');
var str = $('#_form').serialize();
alert(str);
}
</script>
我正在使用ASP.NET MVC 2.0,目前无法迁移到MVC 3.0。
答案 0 :(得分:1)
尝试在不使用javascript的情况下使表单正常工作。然后开始考虑所有ajax和jQuery的东西。
当您想要表单时,请尝试以下内容:
$(function () {
$(".addproductform").submit(function () { // turn all forms with the addproductform class into an ajax version
$.post($(this).attr("action"), $(this).serialize(), function (data) {
// data contains the confirmation or failure that the product was added to your cart, update the cart html on this page
});
return false; // form already submitted using ajax, don't submit it again the regular way
});
});