我正在尝试将用户定义的参数传递给 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/