javascript - Ajax button initiates every button, not just the one selected -


i create ajax button once clicked, item becomes "purchased" user. once item becomes purchased, button's text updated.

the function works, if clicked every button, not one.

for example, have 2 items purchase. if click "buy" on item 1, both item 1 , item 2 pass through if both bought. how make item 1 bought?

thank in advance!

views.py:

def product_purchase(request):     if request.is_ajax() , request.post:         user = request.user         product_pk = request.post.get('product_pk', false)         product = get_object_or_404(product, pk=product_pk)          purchased, created = product.objects.get_or_create(pk=product_pk)          try:             user_purchased = product.objects.get(pk=product_pk, buyers=user)         except:             user_purchased = none          if user_purchased:             purchased.buyers.remove(user)             purchased.save()             user_has_purchased = false         else:             purchased.buyers.add(user)             purchased.save()             user_has_purchased = true          data = {             "user_has_purchased": user_has_purchased,         }         new_data = json.dumps(data)         return httpresponse(new_data, content_type='application/json')     else:         raise http404 

html:

{% product in products %}     <input class="btn btn-default selector" product="{{ product.pk }}" value="{% if request.user.username in purchased.get_buyers %} purchased {% else %} {{ product.cost }} points {% endif %}" type="button" /> {% endfor %} 

javascript:

$('.selector').click(function(e){     e.preventdefault();     var $selector = $(e.currenttarget);     $.ajax({         type: "post",         url: "{% url 'product_purchase' %}",         data: {             "product_pk": $(this).attr("product"),             csrfmiddlewaretoken: "{{ csrf_token }}",         },         datatype: "json",         success: function(data) {             if (data.user_has_purchased) {                 $selector.val("purchased");             } else {                 $selector.val("{{ product.cost }} points");                 }         },         error: function (rs, e) {             alert('sorry, there error.');         }     }); }); 

my apologies everyone. solution value passed in on input. correction change purchased.get_buyers product.get_buyers.

thank though!


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -