0

私は練習のために取り組んでいるSOクローンに似ています。私は投票システムをコーディングしている最中です。賛成/反対ボタンをクリックすると、投稿IDと値を保持する処理ページのパラメーターを使用してAjax呼び出しが送信されるようにしたいと思います。

投稿は、JavaScriptが呼び出す処理ページに記録する投稿を知ることができるようにする必要があります

それぞれ投稿IDを持つ投稿のテーブルと、投票IDを持つ投票を持つ投票テーブルがあるので、投票マッピングテーブルに、投稿IDと一緒にトピックIDを記録します。

しかし、異なる投稿ごとにAjax呼び出しに異なる投稿IDを動的に与える方法を理解できませんか?おそらく隠しフィールドを作成する必要がありますか?

これは一般的にどのように行われますか?どうもありがとう!

4

3 に答える 3

2

実際には、隠しフィールドも使用する必要はありません。) 投稿の ID 自体を使用するか、または賛成/反対ボタンの rel 属性を使用する方が簡単な場合があります。そのように:

HTML

<div id='post-XXX'> 
   <a href='#' class='upvote_post' rel='XXX'></a> 
   { ... some immensely great post content goes here ... }
</div>

JS

$('.upvote_post').click(function() {
  var post_id = this.getAttribute('rel');
  // or var post_id = $(this).parents('div').getAttr('id').match(/\d+$/);
  $.post(some_url, /* data including post_id */)
}
于 2012-02-26T13:05:50.153 に答える
1

Stack Overflow では、すべての投稿に<input type="hidden" value="POSTID">. 投票ボタンがクリックされると、コードはこの入力要素を探し、この投稿 ID とともに AJAX 要求を送信します。

ここで関連するコードを確認できます: http://userscripts.org/scripts/review/125051
このユーザー スクリプトを使用すると、すべての (未登録を含む) ユーザーが投稿の投票数を表示できます。そのためには、投稿 ID と投票ボタンを配置する必要があります。

必要最小限 (CSS を除く) に分解すると、コードは次のようになります。

<input type="hidden" value="--post id--">
<div class="vote upvote"></div>
<div class="vote downvote"></div>

// Example using jQuery:
$('.upvote').click(function() {
    var $this = $(this);
    $.get('/vote', {
        postId: $this.siblings('input[type="hidden"]').val(),
        type: $this.hasClass('upvote') ? '+1' : '-1'
    }, function(data) {
        // do something with server's response.
    });
});
于 2012-02-26T12:55:22.663 に答える
0

すべてのボタンを反復処理して各投稿の ID を上げるか、サーバー側で既に ID を持っているが、作成時にこれらをスクリプトに伝える必要があります。

于 2012-02-26T12:55:36.730 に答える