2012-05-22 4 views
3

jquery 데이터 테이블의 데이터 소스 역할을하는 Java 컨트롤러에 사용자 정의 매개 변수를 전달하려고합니다. 요점은, 내 jsp에 콤보 상자에 대한 변경 이벤트에이 (매개 변수 전달) 할 싶어요. 여기 jQuery 데이터 테이블에 대한 Java 컨트롤러에 추가 매개 변수 전달

내 데이터 테이블 초기화이다

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

아약스 출처의 getQuery.

추신 : 이전 버전의 데이터 테이블을 사용하고 있으므로 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를 기능 : myTeamId 전역 변수입니다

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

합니다. oTable.fnDraw()은 데이터 테이블을 다시 그려 teamId의 값을 myTeamId에 할당합니다.이 값은 fnServerData입니다. 이 코드는 저에게 효과적이었습니다!

관련 문제