这两天写项目的时候,碰到了jqgrid动态注入下拉框值的问题,然后写了个selData()函数,返回从后台查询到的下拉框数据。结果竟然收不到返回值!! 在控制台打印了一下,发现确实是收到值了的,但是就是收不到返回的下拉框数据
我最开始的代码是这样的
function selData(id) {
$.ajax({
url: '/category/list?levels='+id,
async: false,
success:function (data) {
let rows = "";
let dataRows = data.rows;
for (let i = 0; i < dataRows.length; i++) {
rows += dataRows[i].id;
rows += ":";
rows += dataRows[i].name;
if (i < dataRows.length - 1) {
rows += ";";
}
}
console.log(rows);
return rows;
}
})
}
{name: 'category.name',editable:true,edittype:'select',editoptions:{value:selData(2)}},
不知道你们有没有发现其中的误操作, 我反正是看了大半天都没看出来。。。 然后百度,竟然也没看出来。。
甚至于我开始怀疑是jqgrid框架内部的bug,虽然这很扯,可能本来就对着框架用的不熟练,所以才会有这种想法吧。。
然后实在没心态了,就先去写其它模块去了,过了两天回过头来看,终于发现了其中的错误,还真是个无脑操作
我竟然是在success的回调函数中返回的。。。 后面我写到外面终于ok了
正确写法
function selData(id) {
let rows = "";
$.ajax({
url: '/category/list?levels='+id,
async: false,
success:function (data) {
let dataRows = data.rows;
for (let i = 0; i < dataRows.length; i++) {
rows += dataRows[i].id;
rows += ":";
rows += dataRows[i].name;
if (i < dataRows.length - 1) {
rows += ";";
}
}
}
})
return rows;
}