2012-05-22 92 views
3

我想將用戶定義的參數傳遞給作爲我的jQuery數據表的數據源的Java控制器。 重點是,我想在我的jsp上的組合框的更改事件上執行此操作(傳遞參數)。將額外的參數傳遞給Java控制器的jQuery數據表

這是我的數據表初始化:

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" 
        }); 

我的組合框,其值要被傳遞給所述控制器和所述各自的功能是:

$("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'中傳遞的參數。 請幫忙!

回答

2

得到了答案。在初始化過程中,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的值分配給我在fnServerData中使用的myTeamId。 此代碼適合我!

相關問題