У меня есть система рейтинга для группы записей на веб-сайте, они размещаются программно, и поэтому я дал им уникальный идентификатор формы с помощью счетчика.
<form name="star">
<input type="radio" class="star" name="rating" id ="rating" value="Terribad"/>
<input type="radio" class="star" name="rating" id ="rating" value="Meh"/>
<input type="radio" class="star" name="rating" id ="rating" value="OK"/>
<input type="radio" class="star" name="rating" id ="rating" value="Pretty Good"/>
<input type="radio" class="star" name="rating" id ="rating" value="Awesome!"/>
<input type='hidden' name='item' id = 'item' value='<%out.print(item);%>'>
</form>
<span id = "msg<%out.print(item);%>" style = "float:right; margin-left:0px; padding-top:0px;"></span>
У меня также есть другое скрытое поле, которое представляет собой имя пользователя (полученное в javascript), но удалено из-за его большого размера и из сложного массива, основанного на сеансе.
Я также добавил счетчик в скрытое поле, чтобы попытаться разобраться.
Оттуда я запускаю javascript по нажатию одной из кнопок-переключателей, который получит дополнительные сведения о сеансе и выполнит обновление базы данных AJAX.
$(function() {
$(".star").click(function() {
var submission = document.getElementsByName("rating");
var name = $("input#name").val();
var item = $("input#item").val();
var rating;
for (i = 0; i< submission.length; i++) {
if (submission[i].checked) {
rating = submission[i].value;
}
}
var submitted = 'name='+name + 'rating=' + rating;
//alert (item);return false;
$.ajax ({
type: "POST",
url: "/process_rating.jsp",
data: submitted,
success: function () {
$('#msg'+item).html("Submitted");
}
});
return false;
});
});
Все это прекрасно работает с первой записью (когда у меня не было этого количества), но, как я не удивлен, все остальные записи обрабатываются как первая. Основная проблема заключается в том, что когда я пытаюсь обновить msg div с его успехом, он делает только первое, так как получает скрытое значение из первой формы, а не форму, которая была фактически отправлена.
Это все внутри jsp кстати.