jquery – 如何让JQGrid识别服务器发送的错误?

前端之家收集整理的这篇文章主要介绍了jquery – 如何让JQGrid识别服务器发送的错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个jqgrid功能非常好。

我想知道是否有可能捕获服务器发送错误?怎么做?

解决方法

我最近广泛使用了我正在为CB Richard Ellis(我的雇主)工作的原型项目的jqgrid。有很多方法来填充jqgrid,如 documentation所示:(请参阅“检索数据”节点)。

目前,我做一个返回一个json字符串的服务调用,当被评估时,给我一个包含以下内容的对象:

> ColumnNames:string []
> ColumnModels:object [](每个对象都有属性“name”,“index”和“sortable”)
> Data:object [](每个对象都具有与列模型中的名称相匹配的属性)
> TotalRows:int

在我的成功回调中,我手动创建了这样的jqgrid:(“data”是我在评估返回的json字符串时得到的对象)。

var colNames = data.ColumnNames;
var colModel = data.ColumnModels;
var previewData = data.PreviewData;
var totalRows = data.TotalRows;
var sTargetDiv = userContext[0]; // the target div where I'll create my jqgrid

$("#" + sTargetDiv).html("<table cellpadding='0' cellspacing='0'></table>");
var table = $("#" + sTargetDiv + " > table");
table.jqGrid({
    datatype: 'local',colNames: colNames,colModel: colModel,caption: 'Data Preview',height: '100%',width: 850,shrinkToFit: false
});

for (var row = 0; row < previewData.length; ++row)
    table.addRowData(row,previewData[row]);

所以你可以看到我手动填充数据。有一种以上的服务器错误。有一个逻辑错误,您可以在json字符串中作为属性返回,并在尝试创建jqgrid之前检查(或以每行为单位)。

if (data.HasError) ...

或者按行排列

for (var row = 0; row < previewData.length; ++row)
{
    if (previewData[row].HasError)
        // Handle error,display error in row,etc
        ...
    else
        table.addRowData(row,previewData[row]);
}

如果您的错误是服务器上的未处理的异常,则可能需要在异步调用时发出错误回调。在这种情况下,您的成功回调(大概)正在创建您的jqgrid将不会被调用

这当然适用于手动填充jqgrid,这只是可用的许多选项之一。如果您将jqgrid直接连接到服务调用函数来检索数据,那么这其实是完全不同的。

在文档页面上,查看“基本网格”>活动在那里你会看到可能派上用场的“loadError”事件。

猜你在找的jQuery相关文章