我有一个网站上一堆条目的评级系统,它们以编程方式放置在其中,因此我通过使用计数为它们提供了唯一的表单标识符。
<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 btw里面。