我正在使用Play框架2.3.8并构建了一个应用程序,您可以在其中输入问题并回答它们。
我的视图类得到一个List[Question]
,我为每个循环运行并显示它们:
@for(question <- questionList){
<!-- Questions -->
<li class="list-group-item" >
<button type="button" class="btn btn-default" id="upvoteButton"
value="voteUp" style="width: 30px; height: 30px; text-align: center; vertical-align: center;">
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true" style="color:orange"></span>
</button>
<span class="num"> @question.voteScore </span>
(...)
这就是它的样子:
通过jQuery,您可以向/关闭QAs,现在我想通过使用AJAX将更改后的voteScore放入数据库。单击该按钮会启动一个AJAX POST,它会向我的控制器发送当前分数,之后还应该发送questionID:
$(document).ready(function(){
$(".btn-default").click(function(){
if( $(this).val() == 'voteUp'){
$(this).html( "<span class='glyphicon glyphicon-arrow-up' aria-hidden='true' style='color:orange'></span>" );
var currentScore = $(this).parent('li').find('.num').text();
$(this).parent('li').find('.num').html(parseInt(currentScore) + 1);
$.ajax({
type : 'POST',
url : '@routes.Application.voteUp()',
data : {
text : currentScore
},
success : function(data){
}
});
});
});
但我不知道如何将问题ID放入AJAX POST,AJAX POST的数据部分中的id : @question.questionID
不起作用(找不到值错误)。我该如何设法做到这一点?
答案 0 :(得分:1)
首先提供存储问题ID的属性:
<span class="num" id="@question.questionID"> @question.voteScore </span>
第二个提供JS变量来存储来自所选问题的ID:
var currentId = $(this).parent('li').find('.num').attr('id');
第三个通过Ajax将其作为JSON发送给控制器:
$.ajax({
type : 'POST',
url : '@routes.Application.voteUp()',
data : {
score : currentScore, id_question : currentId
},
success : function(data){
}
});
});
最后一个,从控制器获得得分和id_question。