jquery easyui 后台取值

用jquery easyui datagrid


$(function(){

product = $('#product').datagrid({

nowrap:false,

striped:true,

url:'listProduct.action',
sortName: 'pn',

sortOrder: 'desc',

idField:'pn',
        frozenColumns:[[
            {field:'ck',checkbox:true},
        ]],  
        columns:[[  
            {field:'pn',title:'P/N',width:100,align:'center'},  
            {field:'description',title:'Description',width:120,align:'center'},  
            {field:'type',title:'Type',width:100,align:'center'},  
            {field:'brand',title:'Brand',width:60,align:'center'},  
            {field:'pack',title:'Package',width:60,align:'center'}, 
            {field:'unit',title:'Unit',width:60,align:'center'},
            {field:'unitCost',title:'Unit Cost',width:60,align:'right'}, 
            {field:'sell',title:'Sell',width:60,align:'center'},  
            {field:'quantity',title:'Quantity',width:60,align:'center'},  
            {field:'dateCode',title:'Date Code',width:60,align:'center'},  
        ]], 
        pagination:true,
        toolbar:[{
            text:'Add',  
            iconCls:'icon-add',  
            handler:function(){  
                alert('add')  
            }
        },'-',{  
            text:'Edit',  
            iconCls:'icon-edit',  
            handler:function(){  
                alert('edit')  
            }
        },'-',{  
            text:'Delete',  
            iconCls:'icon-remove',  
            handler:function(){
                delRows(product);
            }
        }]  
    });  
});  






function delRows(table) {
var arr = getSelectedRows(table);
if (arr.length > 0) {
$.messager.confirm('Prompt', 'Are you sure to delete the selected record(s)', function (data) {
if (data) {
$.ajax({
url: 'delProduct',
type: 'get',
dataType: 'json',
data: {"id":"[{'id':3},{'id':5}]"},
// timeout: 1000,
error: function () {
$.messager.alert('Error', 'Delete Failure!', 'error');
},
success: function (data) {
if (data.success) {
grid.datagrid('reload');
grid.datagrid('clearSelections');
} else {
$.messager.alert('Error', data.msg, 'error');
}
}
});
}
});
} else {
$.messager.show({
title: 'Wraning',
msg: 'Please select the record you want to delete!'
});
}

function getSelectedRows(table) {
var ids = [];
var rows = table.datagrid('getSelections');
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].id);
}
alert(ids.join('\n'));
return ids;
}



现在主要是data的数据,应该怎么样得到,多选的
现在写的红色部分是测试用的,主要是想传数组

对jquery不大熟悉,请大家指教


问题补充
嗯,这个是我加多了,删除了,谢谢
我就是想在前台用户选择了 多行数据(通过checkbox),然后我要在后台把这些删除,现在问题是不知道怎么样把这些选择的id传到后台

[code="java"][/code][code="java"]
function getSelectedRows(table) {
var ids = [];
var rows = table.datagrid('getSelections');
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].id); s.join('\n'));
return ids;
}

[/code]

我对easyui还是比较熟悉的,首先问个问题,你的删除不就是要最终从数据库中删除吗?

  1. 你用过sql语句中的in关键字吗?
    delete from TableA where id in (1,3,4,5,6);

  2. 你知道js的数组中有个join方法,那么你现在能联想到什么?

对了,将你的id数组转换成 "1,2,3,4,5"的形式传到后台
[code="java"]
function getSelectedRows(table) {
var ids = [];
var rows = table.datagrid('getSelections');
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].id);
return ids.join(",");
}

[/code]

然后通过:
[code="java"]
$.ajax({
url:'XXX.action?ids='+getSelectedRows(table),
method:'POST',
dataType:'json',
success:function(msg){
},
error:function(msg){
}
...
});

[/code]

你已经在ajax里面设置返回值为JSON了,为什么还要使用eval?

看到你的 getSelectedRows(table) 已经拿到了 选中行的 ID 。

[code="javascript"]
$.ajax({

url: 'delProduct',

type: 'get',

dataType: 'json',

data: {"id":"[{'id':3},{'id':5}]"},
[/code]

中将 data 一行换成: data: [{name: 'ids', value: arr.join('\n')}],

在后台 String[] ids = request.getParameter("ids").split("\n");

这样你就得到选中的 ID 了。

[quote]后台用的是struts,不是servlet [/quote]
[code="java"]
private String[] ids;

public void setIds(String ids) {
    this.ids = ids.split("\n"); 
}

[/code]