2012-02-26 33 views
0

我有一個類似的SO克隆我正在爲實踐工作。我正在編碼投票系統。我希望當點擊upvote/downvote按鈕時,會發送一個Ajax調用,其中包含處理頁面的參數,其中包含帖子ID和值。如何獲取JavaScript Ajax調用的帖子ID?

的職位是需要能夠知道在處理網頁上記錄該職位的JavaScript調用

我有一個帖子ID每個職位表和票臺帶票帶票ID ,所以在我的投票映射表中,我將帖子ID旁邊的主題ID記錄下來。

但是,我不能解決如何動態給每個不同的職位的Ajax調用不同的職位ID?我應該創建一個隱藏領域嗎?

這通常如何完成?非常感謝!

+0

你說的帖子ID的意思是,這是進入數據庫中的ID?你是否需要這個帖子ID回到JavaScript?系統上的更多細節將幫助我爲您提供合適的答案。 – Zoidberg 2012-02-26 12:55:02

+0

@Zoidberg更新!謝謝 – youngcouple10 2012-02-26 12:56:53

回答

1

在堆棧溢出時,每個帖子都包含<input type="hidden" value="POSTID">。當點擊一個投票按鈕時,代碼尋找這個輸入元素,併發送一個AJAX請求和這個帖子ID。

你可以看看相關的代碼,在這裏: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 2012-02-26 12:59:30

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 */) 
}