Asp.net mvc 2 在电子商务购物车中使用$(“form”).serialize()
我正在开发一个电子商务应用程序购物车。我有一个定价页面,其中显示了多个类别的产品及其价格列表。用户可以选择向购物车添加多个产品(活动购物车显示在页面右侧)。我正在尝试使用Ajax/jQuery将项目添加到购物车中。我有一个包装在每个产品周围的表单,其中包含多个隐藏字段,我希望传递给我的函数和控制器。您可以在下面的代码中看到所有这些:Asp.net mvc 2 在电子商务购物车中使用$(“form”).serialize(),asp.net-mvc-2,jquery,Asp.net Mvc 2,Jquery,我正在开发一个电子商务应用程序购物车。我有一个定价页面,其中显示了多个类别的产品及其价格列表。用户可以选择向购物车添加多个产品(活动购物车显示在页面右侧)。我正在尝试使用Ajax/jQuery将项目添加到购物车中。我有一个包装在每个产品周围的表单,其中包含多个隐藏字段,我希望传递给我的函数和控制器。您可以在下面的代码中看到所有这些: <% foreach (var _category in Model) { %> <% foreach (var _product in
<% 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>
函数addProductToBasket(_形式){
警报(“Hi”);
var str=$('##_form')。序列化();
警报(str);
}
我正在使用ASP.NET MVC 2.0,目前无法移动到MVC 3.0。尝试在不使用javascript的情况下使表单正常工作。然后开始考虑所有ajax和jQuery的内容
- 从表单中删除id属性并添加action属性(或使用MVC方法:使用Html.BeginForm),向表单标记添加class属性
- 删除Totalprice字段,您应该始终计算此服务器端,您需要提交的唯一字段是产品代码(和数量)
- 删除javascript按钮,并将其替换为经典的提交按钮
$(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
});
});
我按照您的建议,使用Html.BeginForm语句在循环中构建表单,它可以发布,我尝试对表单进行ajaxify处理,但发出警报($(this.serialize());什么也没给我。。。我没有收到任何错误,但是$(this).serialize()返回的是空值。我会错过什么呢?------------$(函数(){$(“.addProductToCartForm”).submit(函数(e){e.preventDefault();警报($(this.serialize());返回false;});});您没有在输入标记中添加名称属性。