我用datatables.editable和Jeditable实现了Jeditable。我可以使用一个文本区域作为一个可编辑的字段,但我有问题,设置一个选择作为可编辑。
我有以下代码来初始化可编辑的内容:
oTable.makeEditable({
sUpdateURL: "../ReconService.asmx/UpdateUser",
"aoColumns": [
null,
null,
{
indicator: 'Updating user...",
tooltip: "Change user",
type: "select",
submit: "Save",
data: getUserFilterOptions()
}
]
});然后我有一个javascript / jquery函数从DB获取用户列表。在这个功能中,我尝试了许多不同的东西。该函数目前的状态是手动将字符串组装成网站可编辑上指定的格式。
我的职能如下:
function getUserFilterOptions() {
$.ajax({
type:"POST",
contentType: "application/json; charset=utf-8",
url: "../ReconService.asmx/GetUsers",
dataType: "json",
success: function(result){
var userResult = result.d;
if (userResult.length > 0){
var text = "{'Select':'Select',";
$.each(userResult, function(index, val) {
text += "'";
text += val["value"];
text += "':'";
text += val["value"];
text += "'";
text += ",";
});
text += "'selected:'Select'}";
return text;
}
},
});
}我使用了Chrome中的developer工具来逐步完成该函数,该函数返回以下字符串:
“{‘选择’:‘选择’,‘管理员’:‘管理员’,‘用户1’:‘用户1',’选定‘:’选择‘}”
据我所知,格式是正确的,但是当我单击可编辑的表格单元格时,会得到一个错误:
Uncaught :输入的意外结束jquery.jeditable.mini.js:34 $.editable.types.select.content jquery.jeditable.mini.js:34 $.fn.editable.each.reset.self.editing jquery.jeditable.mini.js:18 jQuery.event.dispatch jquery-1.8.3.js:3058 jQuery.event.add.elemData.handle.eventHandle jquery-1.8.3.js:2676
令人费解的是,如果我复制该字符串值并将其直接放入jeditable的数据参数中,它就能正常工作。我甚至创建了一个函数来返回这个文字字符串,它工作得很好。
例如,将函数的内容替换为:
function getUserFilterOptions(){
return "{'Select':'Select','Administrator':'Administrator','User1':'User 1','selected':'Select'}"
} 这个很好用。
我不是javascript方面的专家,所以我们非常感谢您的帮助。
发布于 2012-12-12 18:03:00
您应该将ajax请求的类型从异步更改为同步,如下所示:
function getUserFilterOptions() {
return $.ajax({
type:"POST",
contentType: "application/json; charset=utf-8",
url: "/url",
dataType: "json",
async: false,
}).responseText;
}我试图从服务器上返回您的json,结果成功了。
https://stackoverflow.com/questions/13844441
复制相似问题