2016-04-02 6 views
0

ダンビー初心者の質問ですので、私は多くのことを学んでいると仮定してください。応答から変数にクエリデータが渡されない

以下のマイコードは、APIデータベースからジョブの平均支払いを取得する関数です。 変数「soc」は、APIに送信されるジョブ名です。

2つの可能なシナリオがあります:ジョブが送信され

  1. 、リモートデータベースは、平均賃金を提供するのに十分なデータを持っており、これを受けて送信されます。 このシナリオは私のためにうまく動作し、給料は常に自分のhtmlのに表示されます。両方の警告メッセージが表示されます。

  2. ジョブがサブミットされましたが、リモートデータベースには平均支払いを提供するためのデータが不十分です。次のようにこのシナリオでは、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

あなたのコードは、この

$.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 */ }); 
+0

ユーレカ!多くのありがとう@Nauman Ahmad。私の髪を引っ張って3日後、それは動作します! – Bizzy

+0

@Eurekaもしあなたが助けてくれたら、質問を答えとして記入してください。 –

2

成功コールバックは、要求が成功した場合にのみ起動します。応答で404エラーを取得することは、要求が成功しなかったことを示す1つの方法です。

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)が約束インタフェースを実装jqXHRオブジェクトを返します。私はこれに見て、それを行くを与える@Quentin

$.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 */ }); 
+0

おかげのようないくつかのことになります。 – Bizzy

関連する問題