查询数据未从响应传递到变量

时间:2016-04-02 16:35:45

标签: javascript

愚蠢的新手问题所以请假设我有很多东西要学习。

下面的代码是针对从API数据库检索作业的平均工资的函数。 变量“soc”是提交给API的作业名称。

有两种可能的情况:

  1. 作业已提交,远程数据库有足够的数据来提供平均工资,并在响应中发送。 此方案适用于我,付款始终显示在我的HTML 中。这两条警报消息都会出现。

  2. 提交作业但远程数据库没有足够的数据来提供平均工资。在这种情况下,API应如下响应:

    *响应主体 {  “错误”:“此数据的样本量太小而不可靠。请放宽您的过滤器,或尝试粗略查询。” }

    响应代码 404 *

  3. 但是,当我提交“数据不足”作业时,会在我的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
    
    });
    

2 个答案:

答案 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 */ });