我正在寻找一种可以捕获有关Ajax调用的信息的方法。我被要求查看一个使用KnockOut和jQuery / Ajax的小型网站,因为一些最终用户在处理.gif处理时就遇到了网站问题。
因此,查看代码,开发人员使用jQuery对API进行Ajax调用。我不知道该怎么做是捕获或记录用户正在搜索的内容以及任何错误。
最终用户只是回复我们说该网站只是坐在那里旋转,没有任何反应。他们通常会从手机上发出屏幕截图,至少我可以看到他们输入的内容。
如果有错误,我可以通过某种方式停止Ajax调用并向用户显示错误,并希望捕获一些我可以查找的详细错误信息吗?
这里是提交按钮的JS代码
$("#btnSubmit").click(function (event) {
event.preventDefault();
self.validateDate();
self.validateOrigin();
self.srchMessage("No records found.")
var origin = $("#txtOrigin").val();
var destination = $("#txtDestination").val();
var flightDate = $("#txtDate").val();
var flightNo = $("#txtFlightNo").val();
if (flightNo == '') {
flightNo = 'ALL';
}
if (destination == '') {
destination = "ALL";
}
if (origin == '') {
origin = "ALL";
}
if (!self.orginRequired() && !self.dateRequired()) {
var serviceUrl = webApihostName + 'apiflight/v2/flight/' + origin + '/' + destination + '/' + flightNo + '/' + flightDate;
self.progressIcon(true);
self.tblVisible(false);
self.noRecordsMsg(false);
self.flightViewModel.removeAll();
$.ajax({
type: 'GET',
url: serviceUrl,
async: false,
jsonpCallback: 'BindData',
contentType: "application/json",
dataType: 'jsonp',
error: function (e) {
// console.log(e.message);
}
});
}
});
我阅读代码的方式是首先设置一些验证JS并将默认搜索消息设置为“找不到记录”。
然后它查看文本框并获取值或将值设置为“全部”。
然后它创建一个API URI,其中包含名为serviceUrl的信息。
然后它打开进度.gif让用户知道正在发生的事情,隐藏表格以显示搜索结果,我猜想删除了飞行视图模型。
然后它调用API。
但是,如果出现错误,则不执行任何操作。如果确实存在错误,显然是个问题。
我做了一些研究,并在错误部分尝试了以下内容,但是在我添加代码之后的第二天,用户又回来了同样的问题。
error: function (e, xhr) {
self.progressIcon(false);
self.srchMessage("Error retrieving data. " + xhr.responseText);
self.noRecordsMsg(true);
// console.log(e.message);
}
任何人都有一些关于如何获取或显示错误信息的示例。我很乐意使用NLog捕获它,但我很确定这是不可能的,因为这不是服务器端。我也不确定如何强制错误能够在我的机器上本地测试一些东西。
答案 0 :(得分:0)
这里有一些技巧可以获得请求错误。
error: function (xhr, textStatus, errorThrown) {
/**** REPLACE CURRENT DOCUMENT WITH SERVER RESPONSE**/
document.open();
document.write(xhr.responseText);
document.close();
/**** LOGS JSON RESPONSE IF ANY ***/
console.log(xhr.responseJSON);
/**** LOGS JQUERY REQUEST STATUS. POSSIBLE VALUES: "timeout", "error", "abort", "parsererror" ***/
console.log(textStatus);
/**** LOGS HTTP ERROR IF ANY ***/
console.log(errorThrown);
}