我在 jqGrid 中的一个列上使用了格式化程序。格式化程序使用一些逻辑来决定显示什么,在某些情况下,它会调用 ajax 方法。我已经在 Fiddler 中验证了正确的数据来自我的 ajax 调用。我还在 Chrome 调试工具中验证了我的变量设置是否正确。但是,序列完全不正确,因此我的列中的返回值是“未定义”。我可以在调试工具的时间线中看到我的 getJSON 调用在 jqgrid 已经加载后被调用。
我首先尝试了这个:
function myFormatter(cellvalue, options, rowObject)
{
if (rowObject[0] == something) {
$.getJSON('@Url.Action("MyAction", "MyController"), function (myResult) {
var myObject = myResult[0];
return myObject.myID;
});
}
else {
return "";
}
}
我还尝试使用带有 async=false 的 ajax 调用,并且我尝试了 type 和 dataType 的不同值,但结果都是一样的:
function myFormatter(cellvalue, options, rowObject)
{
if (rowObject[0] == something) {
$.ajax({
type: 'POST',
url: '@Url.Action("MyAction", "MyController"),
async: false,
success: (function(result) {
var myObject = myResult[0];
return myObject.myID;
})
});
}
else {
return "";
}
}