2015-12-17 90 views
0

我試圖用ajax發送產品ID,但我得到相同的ID總是無法使用jQuery AJAX

{% for product in products %} 

    <div id="product"> 
    <a href = '#'> 
    {{ product.id }} 


<form id="productfrm"> 
<input type = "hidden" name = "productid" value="{{ product.id }}"> 
</form> 
</a> 
</div> 

{% endfor %} 

這裏給我唯一的產品ID是AJAX腳本

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#product>a').on('click',function(){ 
      event.preventDefault(); 
      var fData = $("#productfrm").serialize(); 
      console.log(fData) 
      $.ajax({   
       type: "GET", 
       url: "{% url 'storeView' user=store.user %}", 
       data: fData, 
       success: function(data){ 
        alert('success'); 
       }, 

       error: function(response, error) { 
        alert(error); 
       } 
      }); 
     }) 
    }); 
</script> 

我能確實發送唯一的產品ID點擊分區 在此先感謝

+0

你有多個表單具有相同的ID? –

+0

我能做些什麼來解決這個問題? –

+0

爲什麼你在這裏有表格?您可以傳遞productId作爲查詢參數或路徑參數。 –

回答

1

你真的好像不需要在這裏的形式。如果你想獲取基於一些數據上productId點擊,只是有一個onclick聽衆對你的超鏈接:

{% for product in products %} 
    <a href = '#' onclick="getStoreView(e, {{ product.id }})"> 
    {{ product.id }} 
    </a> 
{% endfor %} 

然後在你的JS,有一個功能:

<script type="text/javascript"> 
    function getStoreView(event, productId) { 
     event.preventDefault(); 
     console.log(fData); 
     // Send productId as query param of url 
     $.ajax({   
      type: "GET", 
      url: "{% url 'storeView' user=store.user %}", 
      data: fData, 
      success: function(data) { 
       alert('success'); 
      }, 

      error: function(response, error) { 
       alert(error); 
      } 
     }); 
    }); 
</script> 
+0

獲得意想不到的令牌) –

0

像羅希特評論,你不應該在頁面上多次使用相同的ID。每次循環呈現產品時,它都會打印一個ID爲「productfrm」的表單。你使用這個作爲fData var的選擇器,這就是你的腳本出錯的地方。 jQuery不知道使用這個選擇器,你正在尋找當前產品中的表單。

你可以做的一件事是從窗體中刪除ID。然後換

var fData = $("#productfrm").serialize(); 

var fData = $(this).find('form').serialize(); 

這應該做的工作。但是,將表單放入錨標籤中並不是一種好的做法。