java - 将额外参数传递给 jQuery 数据表的 Java Controller

标签 java jquery jsp datatable

我正在尝试将用户定义的参数传递给 Java Controller ,它充当我的 jquery 数据表的数据源。 关键是,我想在我的 jsp 上的组合框的更改事件上执行此操作(传递参数)。

这是我的数据表初始化:

var oTable = $('#reqAllQueriesTable')
            .dataTable(
                    {
                        "sDom": '<"H"l<"projectTeamTools">frtip>',
                        "bProcessing": true,
                        "bServerSide": true,
                        "sAjaxSource": "query/getQuery",
                        "bPaginate" : true,
                        "bLengthChange": true,
                        "bScrollCollapse" : true,
                        "iDisplayLength" : 10,
                        "bFilter" : true,
                        "bJQueryUI" : true,
                        "sPaginationType" : "full_numbers",
                        "sSearch": "Search"
                    });

我的组合框,其值要传递给 Controller ​​,各自的功能是:

    $("div.projectTeamTools").html('Organize by Project Teams: <select id="projectTeams"><option value="0">Project Team</option><option value="1">All</option><option value="2">Not Associated</option><c:forEach var="projectTeam" items="${userProjectTeams}"><option value="${projectTeam.projectId}">${projectTeam.projectName}</option></c:forEach></select>');  


    $("#projectTeams").change(function () {
        onTeamSelect($(this).val());
    }); 

    function onTeamSelect(teamId){
        alert(teamId +" Selected");
//This function to pass the parameter to the datatable is supposed to be here.
        oTable.fnDraw();
    }

数据表然后显示它从 ajax Source getQuery 接收到的新数据。

PS:我不能使用 fnServerParams,因为我使用的是旧版本的数据表。我试过使用 fnServerData 但它没有帮助。我想我在 fnServerData 中使用 ajax 函数的方式是错误的。

"fnServerData": function ( sSource, aoData, fnCallback ) {
                            $("#projectTeams").change(function() { 
                                 aoData.push( { "name": "myParam", "value": $("#ComboBox option:selected").value() } );
                                    $.ajax( {
                                        "dataType": 'json', 
                                        "url": sSource, 
                                        "data": aoData, 
                                        "success": fnCallback
    });

当我从组合框中选择一个项目时,我在浏览器的“网络 XHR”中看不到要传递的参数。 请帮忙!

最佳答案

得到了答案。在初始化期间,fnServerData 应该是:

"fnServerData": function ( sSource, aoData, fnCallback ) {
                    aoData.push( { "name" : "myTeamId", "value" : myTeamId  } );
                    $.getJSON( sSource, aoData, function (json) { 
                        fnCallback(json);
                    });
              }

以及我要传递参数的组合框的 onChange 函数:

    $("#projectTeams").change(function () {
        onTeamSelect($(this).val());
    }); 
    function onTeamSelect(teamId){
        myTeamId = teamId;
        oTable.fnDraw();
    }

其中 myTeamId 是一个全局变量。 oTable.fnDraw()重新绘制数据表并分配 teamId 的值到 myTeamId ,我在 fnServerData 中使用. 这段代码对我有用!

关于java - 将额外参数传递给 jQuery 数据表的 Java Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10701425/

相关文章:

java - Android:使用来自 itemOnSelected Spinner 的行结果 (sqlite) 填充 TextView

java - 通用 Java 移动开发

java - DnD 骰子滚轴

javascript - 隐藏文字被隐藏,不会显示

java - 使用 java 的 MVC - 返回 NULL

javascript - 如何让 Jackson 在输出字符串中转义 &lt;/script&gt;?

java - 如何在 Java 中比较字符串?

javascript - 页面更改后,jQuery Mobile ajax 加载 jsonp 不起作用

javascript - 如何选取所有以GB开头的类元素?

java - 如何处理DB mysql中的特殊字符