我正在使用 MVC 将 JSON 数据传递到 JsTree 并显示信息的分层 View 。 一切工作正常,但是,有时用户无权访问数据或由于某种原因 MVC 操作抛出异常:
在这些情况下,操作会传递 JSON 错误消息并将 HttpStatusCode
设置为 NotAccepted
或 InternalServerError
。
但是 jsTree 的罪魁祸首一直在旋转,我似乎找不到办法让它停止并显示错误消息。
有人解决过这个问题吗?使用 JsTree 的 JSON 数据插件时如何进行错误处理?
更新:
我想出了如何捕获错误:
$("#jstree1").jstree({
"json_data": {
"ajax": {
"url": serviceUrl,
"data": function (n) {
return { pid: n.attr ? n.attr("id") : "" };
},
"error": function (x, s, r) { var err = $.parseJSON(x.responseText); if (err!="") { alert(err); } }
}
}
看来 JsTree 确实获取了 MVC http statusCode 和错误,现在我需要弄清楚如何告诉 JsTree 停止等待并删除旋转图像!
我也在寻找一种在 JsTree 中显示错误的好方法,或者我应该在 JsTree 之外管理错误消息?
最佳答案
我已经解决了这个问题。
请注意 - 上面处理 ajax 调用错误的代码示例不正确,请参阅下面的完整示例:
$('#YourTree').jstree({
"json_data": {
"ajax": {
"url": "/Controller/Action",
"data": function () {
return { Parameter1: "Value1", Parameter2: "Value2" }
},
"type": "POST",
"dataType": "json",
"error": function (jqXHR, textStatus, errorThrown) { $('#YourTree').html("<h3>There was an error while loading data for this tree</h3><p>" + jqXHR.responseText + "</p>"); }
}
}
});
而在实际操作中,需要将http响应状态码设置为1并写入错误。例如
Response.StatusCode = 1
Response.Write("Error you want to go into jqXHR.responseText here");
享受吧:)
关于asp.net-mvc - jQuery JsTree 和 JSON 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8335986/