2012-01-05 27 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

相关问题