2016-07-05 11 views
0

Ich möchte eine ähnliche Schaltfläche für einen Feed mit Jquery Ajax.On feed-page.html implementieren. Der Code funktioniert, indem Sie einen Benutzer wie oder anders als ein Feed, aber wie kann ich make <p id='count'> laden Sie Ajaxly auf schlagen Like Knopf? Vielen Dank für Ihre Hilfe im VorausWie Ajax eine Variable bei Erfolg ändern

<p>{{feed_detail.text|linebreaks}} </p> 
      <p id='count'> {{feed_detail.total_likes}} concern{{feed_detail.total_likes|pluralize:'s'}}</p> 
      <p> {{feed_detail.pub_date|naturaltime|capfirst}} </p> 
        <input type="button" id="like" name="{{feed_detail.slug}}" value="Like" /> 
<script> 
$('#like').click(function(){ 

     $.ajax({ 

       type: "POST", 
       url: "{% url 'like' %}", 
       data: {'slug': '{{feed_detail.slug}}' , 'csrfmiddlewaretoken': '{{ csrf_token }}'}, 
       dataType: "json", 
      }); 
    }) 
</script> 
+0

sollten Sie das im Erfolgsblock von Ajax tun – Cyril

Antwort

0

so etwas wie dies versuchen, die Eingabe ändern Checkbox

<p id='count'><span>{{feed_detail.total_likes}}</span> concern{{feed_detail.total_likes|pluralize:'s'}}</p> 
<input type="checkbox" id="like" name="{{feed_detail.slug}}" value="Like" /> 
    $('#like').click(function(){ 
     var el = $(this); 
      $.ajax({ 

        type: "POST", 
        url: "{% url 'like' %}", 
        data: {'slug': '{{feed_detail.slug}}' , 'csrfmiddlewaretoken': '{{ csrf_token }}'}, 
        dataType: "json", 
        success: function(data){ 
         if (el.is(':checked')) { 
         $('#count span').text(parseInt($('#count span').text())+1); 
         } else { 
         $('#count span').text(parseInt($('#count span').text())-1); 
         } 
        } 
       }); 
     }); 

Demo Typ: https://jsfiddle.net/gxup1wpo/

+0

Danke, aber das funktioniert nicht.Was es tut, ist auf Klick von Like.It append 1 zu Text wie zum Beispiel wenn es wo '2 betrifft' vor, es tut '21 'auf einem anderen Klick' 211 'und so weiter.Ich möchte etwas, das die Variable {{feed_detail.total_likes}} in #counts beim Klicken auf wie Schaltfläche neu laden.So ist es "3 Bedenken" – Bolaji

+0

aktualisiert meine Antwort – madalinivascu

+0

Dies funktioniert außer für Ein Problem, das beim Seitenaufruf oder beim erneuten Laden angezeigt wird, zeigt {{feed_detail.total_likes}} nur, wenn Like aktiviert ist und dann angezeigt wird. Was kann ich dagegen tun? – Bolaji

0

Ich glaube, Sie suchen Erfolgsfunktion.

.done(function(response) { 
    alert(response); 
    console.log(response); 
}) 

Und überprüfen Sie das Konsolenprotokoll in Ihrem Browser. Überprüfen Sie diese link für weitere Informationen.

0

fand ich dazu eine Lösung, die

<p>{{feed_detail.text|linebreaks}} </p> 
      <p id='count'> {{feed_detail.total_likes}} concern{{feed_detail.total_likes|pluralize:'s'}}</p> 
      <p> {{feed_detail.pub_date|naturaltime|capfirst}} </p> 
        <input type="button" id="like" name="{{feed_detail.slug}}" value="Like" /> 
<script> 
$('#like').click(function(){ 

     $.ajax({ 

       type: "POST", 
       url: "{% url 'like' %}", 
       data: {'slug': '{{feed_detail.slug}}' , 'csrfmiddlewaretoken': '{{ csrf_token }}'}, 
       dataType: "json", success: function(){ 
         $('#count').load("{% url 'feed_detail' slug=feed_detail.slug %} #count"); 

        } 
      }); 
    }) 
</script> 

Diese {% url 'feed_detail' slug=feed_detail.slug %} sollte die URL der aktuellen Webseite sein und beachten Sie die Verwendung von count id Fang ziemlich einfach ist, dass ein Teil der Seite speziell zu erhalten und neu zu laden.