愚蠢的新手问题所以请假设我有很多东西要学习。
下面的代码是针对从API数据库检索作业的平均工资的函数。 变量“soc”是提交给API的作业名称。
有两种可能的情况:
作业已提交,远程数据库有足够的数据来提供平均工资,并在响应中发送。 此方案适用于我,付款始终显示在我的HTML 中。这两条警报消息都会出现。
提交作业但远程数据库没有足够的数据来提供平均工资。在这种情况下,API应如下响应:
*响应主体 { “错误”:“此数据的样本量太小而不可靠。请放宽您的过滤器,或尝试粗略查询。” }
响应代码 404 *
但是,当我提交“数据不足”作业时,会在我的html中显示上次成功作业查询的付款。奇怪的是,两条警报消息都无法显示。
所以我需要一种方法来检测响应错误并通过将“不可用”放入我的工资变量来做出响应。如何检测不生成警报的错误?
感谢您花时间阅读本文。
$.get("http://api.lmiforall.org.uk/api/v1/ashe/estimatePay",
{ soc: soc, coarse: "false", filters:"region:12"},
function(datani) {
alert(datani);
var nipay = maxBy("year", datani.series).estpay ; //load data into variable
alert(nipay);
$("#graph-box1").html("<p><b>NI:</b> " + nipay + " GBP/week </p>") // display the result
});
答案 0 :(得分:2)
成功回调仅在请求成功时触发。在响应中出现404错误是指示请求未成功的一种方法。
get
简写方法不接受错误回调。
您可以使用完整的ajax
功能。
$.ajax(
"http://api.lmiforall.org.uk/api/v1/ashe/estimatePay",
{
data: { soc: soc, coarse: "false", filters:"region:12"},
success: function(data) { /* etc */ },
error: function(jqXHR, textStatus, errorThrown) { /* etc */ }
}
);
或者,get
(和ajax
)返回一个实现promise接口的jqXHR对象。
$.get(
"http://api.lmiforall.org.uk/api/v1/ashe/estimatePay",
{ soc: soc, coarse: "false", filters:"region:12"}
)
.done(function (data, textStatus, jqXHR) { /* etc */ })
.fail(function (jqXHR, textStatus, errorThrown) { /* etc */ });
答案 1 :(得分:0)
你的代码应该看起来像这样
$.get(
"http://api.lmiforall.org.uk/api/v1/ashe/estimatePay",
{soc: soc, coarse: "false", filters:"region:12"})
.done( function(datani) {
alert(datani);
var nipay = maxBy("year", datani.series).estpay ;
alert(nipay);
$("#graph-box1").html("<p><b>NI:</b> " + nipay + " GBP/week </p>")
})
.fail(function (jqXHR, textStatus, errorThrown) { /* handle the error */ });