タイトルがわかりにくいかもしれません。申し訳ありません。これが私の問題です。
forループを使用してインデックスページに投稿をレンダリングします。すべての投稿には、上下に投票するオプションがあります。これらの投票リクエストを ajax 経由で送信したいと考えています。しかし、コードを書くと、ページ内の最初のコンテンツに対してのみ ajax がうまく機能しました。以下、動作しません。forループを使用すると、同じIDの投稿が複数あることに気付きました。そのため、ajax と html は他のコンテンツを無視します。
ここに私のコードがあります
index.html:
<ul>
{% for post in posts %}
<li>
<input type="hidden" value="{{post.id}}" id="post_id" />
{{ post.title }}
<a href="javascript:" id="vote_up">VOTE UP</a>
<a href="javascript:" id="vote_down">VOTE DOWN</a>
<button id="current_vote"> {{ post.vote }} </button>
</li>
{% endfor %}
</ul>
およびjs側:
$( function (){
49 var post_id = $('#post_id').val();
50 $('#vote_up').click( function(){
51 var vote = 1;
52 var ajaxOpt = {
53 type: 'post',
54 url: '/content/vote/',
55 data: {
56 'vote': vote,
57 'post_id': post_id,
58 },
59 success: function(data){
60 $('#current_vote').text(data.vote_new);
61 },
62 error: function(){
63 console.log('error :[');
64 }
65 };
66 $.ajax(ajaxOpt);
67 return false;
68
69 })
// same code for vote_down
89 })
私のやり方に何か問題があると思います。私は何をすべきか?
ありがとうございました。