2010-12-07 71 views
0

我正在研究電子商務應用程序購物車。我有一個定價頁面,顯示多個類別的產品及其價格清單。用戶可以選擇添加多個產品到購物車(活動購物車正在顯示在頁面的右側)。我正在嘗試使用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。

回答

1

試着讓你的表單首先不使用JavaScript。然後開始思考所有的ajax和jQuery的東西。

  • 從窗體中刪除id屬性並添加一個動作屬性(或者使用MVC方法:使用Html.BeginForm),將一個類屬性添加到窗體標記。
  • 刪除Totalprice字段,您應該始終計算此服務器端,唯一需要提交的字段是產品代碼(和數量)。
  • 刪除javascript按鈕並將其替換爲傳統的提交按鈕。

當你想ajaxify形式,嘗試這樣的事情:

$(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 
}); 
}); 
+0

我跟着你的建議,並使用Html.BeginForm聲明打造循環形式,它能夠發佈,我嘗試以ajaxify形式BUT警報($(this).serialize());沒有返回任何內容...我沒有收到任何錯誤,但$(this).serialize()返回一個空值。我可能會錯過什麼?使用(Html.BeginForm(「」,「」,FormMethod.Post,new {@class =「addProductToCartForm」})){%> Alex 2010-12-08 22:12:20

相關問題