2012-01-05 34 views
1

他所有,通過下拉菜單選擇的值(列表)作爲通過Ajax參數傳遞給控制器​​

我有一個下拉組合框中,我需要選擇的值作爲發送清單,我的控制器。

我已經試過這樣的事情。

下拉:

<g:select name="clientId" id="clientId" multiple = "yes" size = "4" from="${com.springpeople.steer.partymodel.roles.ClientRole.list()}" class = "filter_combo" optionKey="id" /> 

方法上改變撥打:

$("#clientId").change(function(){ 
var clientId = $("#clientId").val(); // it gives clientId = 1,2,3 
var department = document.getElementById("departmentId"); 
department.options.length=0; 
fillDepartment(clientId,"filter_department","${createLink(controller:'report', action:'fillDepartments')}") 
       } 

fillDepartmentInFilter Ajax調用方法:

function fillDepartment(clientId,department_div_id,fillDepartmentUrl,selectedDepartmentIds){ 
    $.ajax({ 
     url:fillDepartmentUrl, 
     data: ({clientId :clientId,departmentId:selectedDepartmentIds}), 
     dataType: "html", 
     success: function(data) { 
      $("#"+department_div_id).html(""); 
      $("#"+department_div_id).attr("disabled", true); 
      $("#"+department_div_id).attr("color") 
      $("#"+department_div_id).html(data); 
     } 
    }); 
} 

我想ClientID的值作爲控制器中的列表..我現在當我試圖打印它給我這樣的參數值這樣的值如下

fillDepartments :: parameters = [clientId []:[3 ,13,9,動作:fillDepartments,控制器:報告] fillDepartments ::客戶端ID = NULL

回答

0

首先獲得所有選定的指標,然後取他們作爲一個字符串您的AJAX。在你的服務器端腳本代碼以低於它們與你喜歡定義的分路器「」:

var cmb = document.getElementById('clientID'); 
var selItems = ""; 
for(i=0;i<cmb.options.length;i+=1){ 
    if(cmb.options[i].selected){ 
    selItems = selItems + cmb.options[i].value + ","; 
    } 
} 
// Remove the last splitter 
selItems = selItems.substr(0,selItems.length-1); 

然後通過selItems在jQuery的AJAX您data參數。

希望我的代碼是正確的,我沒有測試它。

+0

爲(I =; I maaz 2012-01-05 14:06:41

+0

我更正了代碼。 – MahanGM 2012-01-05 15:09:25

相關問題