如何将scala模板中的ID放入AJAX调用中?

时间:2015-05-17 15:35:50

标签: javascript jquery ajax scala playframework

我正在使用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>

(...)

这就是它的样子: Example

通过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不起作用(找不到值错误)。我该如何设法做到这一点?

1 个答案:

答案 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。