2015-04-22 16 views
5

Sayfada bir foreach döngüsüyle oluşturduğum on adet on düğme var.Ajax çağrısı geri döndükten sonra iç metni değiştirin.

İç metinleri jQuery ile değiştirmede sorun yaşıyorum.

bana elemanları

 <a class="pr-endorse" id="<%=product.ConfectionaryProductId %>"> 
     <i class="pr-add"></i> 
     <span>+</span> 
     <span class="pr-likes"><%=product.EndorsementCount %></span> 
    </a> 

benim gibi düğme elemanlarının Bu seferki ile açıklayalım.

Ve bu kod parçası

$(this).find(".pr-likes").text(result.endoresCount); 

ama çalışmıyor çözmek gerektiğini

 $(document).ready(function() { 
     $(".pr-endorse").click(function() { 
      debugger; 
      var productId = $(this).attr("id"); 
      var confId = $("#ConfectioneryId").val(); 
      var countNumber = $(this).find(".pr-likes").html(); 
      $.ajax({ 
       url: '<%: Url.Action("Endorsement","Confectionery")%>', 
       data: { productId: productId, itemId: confId }, 
       type: "POST", 
       async: true, 
       cache: false, 
       success: function (result) { 

        debugger; 
        $(this).find(".pr-likes").text(result.endoresCount); 
        alert(result.endoresCount); 

       }, 
       error: function (xhr) { 
        alert(xhr); 
       } 

Ben şey gibi kullanıcıyı göndermek için Ajax fonksiyonudur?

+1

Soru şu ki, neden bir nesne olur? Bir dataType ayarlanmış gibi görünmüyor, ancak tüm seçenekler görünmüyor, işlev kesiliyor, kim bilir? Ayrıca, sunucunun ne döndüğü hakkında bir fikrimiz yok, bu kod nerede? – adeneo

+1

Ayrıca, bu '' '' '' 'başarı fonksiyonunun içinde bir öğe değildir, ajax işlevidir – adeneo

+0

@adeneo Yorum için teşekkürler, sonucun nesneye endoesmentCount olduğunu görürseniz, ajax tarafından geri dönen int veri türü geri dön – salar

cevap

1

Muhtemelen başarı işlevi içinde this tıklanan eleman olmadığı bu

$(document).ready(function() { 
    $(".pr-endorse").click(function() { 

     var self  = this 
     var productId = self.id; 
     var confId  = $("#ConfectioneryId").val(); 
     var countNumber = $(this).find(".pr-likes").html(); 

     $.ajax({ 
      type : "POST", 
      url : '<%: Url.Action("Endorsement","Confectionery")%>', 
      data : { 
       productId : productId, 
       itemId : confId 
      }, 
      dataType : 'json', 
      success : function (result) { 

       $(self).find(".pr-likes").text(result.endoresCount); 
       alert(result.endoresCount); 

      }, 
      error : function (xhr) { 
       alert(xhr); 
      } 
     }); 
    }); 
}); 

Not gibi görünmelidir, bir deneyin edeceğiz ve genelde istediğimiz bir nesneyi döndürmek için dataType'ı ayarlamak için, eğer jQuery üstbilgiler doğruysa ayrıştırsa bile.

+0

Teşekkür ederim çok muş, işe yarıyor, bana nerede hata olduğunu söyler misin – salar

+1

Seni bıraktığım yorumlar ve yukarıdaki cevapta? – adeneo

1

Eğer denetleyicisinden Json(new { endoresCount = count }); dönen emin olun, ayrıca

$(".pr-endorse").click(function() { 
    var el = $(this); 
    $.ajax({ 
     success: function (result) { 
      el.find(".pr-likes").text(result.endoresCount); 
     } 
    }); 
}); 

deneyin.

+0

size teşekkür ederim, evet dediğin gibi kontrolörden dönüyorum – salar

İlgili konular