私は電子商取引アプリケーションのショッピングカートで作業しています。私は、製品のリストとその複数のカテゴリーの価格を表示する価格設定ページを持っています。ユーザーは複数の商品をショッピングカートに追加することができます(アクティブなショッピングカートはページの右側に表示されています)。カートにアイテムを追加するために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に移行できません。
を私はあなたの提案に続き、Html.BeginFormステートメントを使用してループ内でフォームを作成し、投稿することにそのことが、私が試しましたフォームをajaxifyするために警告アラート($(this).serialize());私には何も返されません...私はエラーはありませんが、$(this).serialize()は空の値を返しています。私は何が欠けていますか? – Alex
<%使用(Html.BeginForm( ""、 ""、FormMethod.Post、新しい{@class = "addProductToCartForm"})){%>の」/>の<% } %> ---------------- $(関数(){ " カートに入れます$ {"addProductToCartForm"}; }); ;}); }); $ {"addProductToCartForm" – Alex
入力タグに名前属性を設定していません。 – ZippyV