2012-02-26 9 views
0

私はSOクローンと同じように私は練習のために取り組んでいます。私は投票システムのコーディングの途中です。 upvote/downvoteボタンをクリックすると、ポストIDと値を保持している処理ページのパラメータとともにAjaxコールが送信されます。javascript Ajaxコールの投稿IDを取得する方法は?

ポストはjavascriptのは、私が投票idの投票と郵便番号と投票テーブルと支柱それぞれのテーブルを持っている

を呼び出すことを処理ページに記録するためにどのポストを知ることができるように必要とされていますので、私の投票マッピングテーブルでは、私はポストIDと一緒にトピックIDを記録します。

しかし、私はどのように動的に別の投稿ごとに別の投稿IDをAjax呼び出しに与えることができません?私はおそらく隠されたフィールドを作成する必要がありますか?

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

+0

あなたは郵便番号とはどういう意味ですか、これはデータベースに起こっているIDですか?このポストIDはjavascriptにも戻ってくる必要がありますか?システムの詳細をもう少し詳しくお聞きしたいと思います。 – Zoidberg

+0

@Zoidbergが更新されました!ありがとう – youngcouple10

答えて

1

スタックオーバーフローでは、すべての投稿に<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. 
    }); 
}); 
+0

ちょうど私が欲しかった、ありがとう!!後で受け入れ、まだやりません – youngcouple10

0

あなたはすべてのボタンを反復処理し、各ポストのIDを上げるか、彼らはすでに、IDSサーバー側を持つことができますが、その後作成時にこれらのスクリプトを伝える必要があります。

2

実際には、非表示フィールドを使用する必要はありません。 )投稿のID自体、またはupvote/downvoteボタンの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 */) 
} 
関連する問題