【发布时间】:2015-03-03 22:36:26
【问题描述】:
ASP.NET MVC4 购物车应用程序使用客户端浏览器实现错误日志记录
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
$.post('/Home/Error',
{
"errorMsg": errorMsg,
"url": url,
"lineNumber": lineNumber,
"column": column,
"errorobj": JSON.stringify(errorObj)
});
这会记录有关令牌 o 的奇怪错误:
Error Uncaught SyntaxError: Unexpected token o
网址和列号略有不同:
Line 1 Column 2
Line 1 Column 10 Object {}
Line 1 Column 10 Object {}
Line 1 Column 9 Object {}
Line 1 Column 1 Object {}
行号始终为 1,对象为空。 有 4 种不同的列号:1,2,9,10
如何在 javascript 中找到导致此异常的行? 在无法访问的客户端浏览器中发生异常。唯一的办法是 将js代码行信息发送到浏览器。
这些页面包含很少的 ajax 调用。 /Store/Browse 包含将商品添加到购物车的 ajax:
request = $.post('/Store/AddToCart',
serializedData, function (response) {
$("#cart-status").text(response.Total);
$inputs.prop("disabled", false);
var xx = $form[0].quantity;
$($form[0].quantity).css("background-color", "green");
showMessage(response.Message);
showFadeOutMessage(response.Message);
})
.fail(function (jqXHR, textStatus, errorThrown) {
alert('Error ' + textStatus);
})
.always(function () {
$inputs.prop("disabled", false);
});
可以将 lastLine 分配添加到类似的代码中
var lastLine;
lastLine="request = $.post('/Store/AddToCart";
request = $.post('/Store/AddToCart',
serializedData, function (response) {
lastLine='$("#cart-status").text(response.Total)';
$("#cart-status").text(response.Total);
lastLine='$inputs.prop("disabled", false)';
$inputs.prop("disabled", false);
...
并在 window.onerror 中将 lastLine 值发送到服务器,但这需要手动更改大量代码。 有没有更好的方法来找到这里发生错误的行,也许还有堆栈跟踪?
【问题讨论】:
标签: javascript jquery asp.net ajax asp.net-mvc-4