Как получить почтовый идентификатор для вызова javascript Ajax? - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть похожий на SO клон, над которым я работаю на практике. Я нахожусь в середине кодирования системы голосования. Мне бы хотелось, чтобы при нажатии кнопки upvote / downvote отправлялся Ajax-вызов с параметрами для страницы обработки, содержащей идентификатор сообщения и значение.

Публикация необходима для того, чтобы знать, какую запись записывать на странице обработки, которую javascript вызывает

У меня есть таблица сообщений, каждая с идентификатором записи и таблица голосов с голосами с идентификатором голосования, поэтому в своей таблице отображения голосов я записываю идентификатор темы рядом с идентификатором сообщения.

Однако я не могу понять, как динамически назначать разные идентификаторы сообщений для вызова Ajax для каждого отдельного сообщения? Должен ли я создать, возможно, скрытое поле?

Как это обычно делается? Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 26 февраля 2012

На самом деле, вам также не нужно использовать скрытые поля.) Может быть проще использовать сам идентификатор сообщения или атрибут rel кнопок upvote / downvote.Вот так:

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 */)
}
1 голос
/ 26 февраля 2012

При переполнении стека каждое сообщение содержит <input type="hidden" value="POSTID">. При нажатии кнопки голосования код ищет этот элемент ввода и отправляет запрос AJAX вместе с этим идентификатором сообщения.

Вы можете посмотреть соответствующий код здесь: http://userscripts.org/scripts/review/125051
Этот пользовательский скрипт позволяет всем (включая незарегистрированных) пользователям просматривать подсчет голосов по сообщениям. Для этого должны быть расположены идентификатор записи и кнопки голосования.

Код без кода (без 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 голосов
/ 26 февраля 2012

Вы можете перебирать все кнопки и увеличивать id каждого сообщения, или у них уже есть идентификаторы на стороне сервера, но затем вы должны сообщить их сценарию при создании.

...