我有一堆AJAX调用可能会引发错误。它们中的每一个都调用我设置的ShowError(e,f)函数。e参数是错误对象,f参数是一个函数,如果用户点击再次尝试,我向他们展示它们。我已经让它调用重试函数,但我也想记录它。我可以调用 f.toString() 来获取重试函数的代码,但是我正在寻找代码正在使用的值,但我无法找到它们。原话:function callServer(a,b,c) { $.ajax({ type: "POST", url: '/ajax/code/that/might/produce/an/error/', data: JSON.stringify({ a: a, b: b, c: c }), contentType: "application/json; charset=utf-8", dataType: "json", accepts: "application/json", success: function (result) { alert("good"); }, error: function (e) { showError(e, function () { callServer(a, b, c); }); } });}显示错误函数var reTryFunction;function showError(e, f) { reTryFunction = f; $("#hdnJSError").val((JSON.stringify(e)).replace(/</g, "<").replace(/>/g, ">")); $("#ErrorModal").modal("show");}用户点击“错误模式”对话框中的重试按钮时调用的重试函数function retry(){ $.ajax({ type: "POST", url: '/ErrorReport', data: JSON.stringify({ txtErrorReport: $("#txtErrorReport").val(), hdnJSError: $("#hdnJSError").val(), reTryFunction: reTryFunction.toString() }), contentType: "application/json; charset=utf-8", dataType: "json", accepts: "application/json", success: function (result) { }, error: function (result) { } }); $("#txtErrorReport").val(""); $("#ErrorModal").modal("hide"); reTryFunction();}这样做,我可以有一个通用的错误处理程序,它向我显示“function(){callServer(a,b,c)}”是错误的,但我想知道a,b和c的值是什么(以通用方式,所以如果最初调用函数有1或9999个参数传递给它,它仍然告诉我的错误记录器传递给它什么。
1 回答
侃侃尔雅
TA贡献1801条经验 获得超15个赞
您可以将回调的参数分离出来,以便像这样分隔参数
error: function (e) { showError(e, callServer, [a,b,c]); }
然后在您的显示错误中,您可以访问参数
即使您不知道有多少个参数,也可以使用点差运算符传入参数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
function showError(e, f, params) { consolelog(params); reTryFunction = function () { f(...params); } $("#hdnJSError").val((JSON.stringify(e)).replace(/</g, "<").replace(/>/g, ">")); $("#ErrorModal").modal("show"); }
添加回答
举报
0/150
提交
取消