ランダムなHearthstoneカードジェネレータを作成しようとしていますが、JSONデータをAPIから取得してJSオブジェクトに変換する際に問題があり、HTMLにテキストを入力できます。リクエストメーカーでリクエストをテストしたので、APIリクエストはうまく動作しますが、明らかに欠点がいくつかあります。 JSONデータをJSオブジェクトに変換するためのさまざまな構文を試しましたが、うまく機能しません。私は成功キー/値のペアに入れたコールバック関数に何か問題があると考えています。それにもかかわらず、私は解決策のためにかなり見てきましたが、私はいくつかの事柄を変更しましたが、機能しません。どんな助けもありがとう!Hearthstone APIからJSONデータを引き出す
私は、次のボタンをクリックすると、データを取得して、画面上の指定された要素に入力するときに何が起こりたいのですか。私が取得しようとしているデータは、唯一のパラメータImを使用しているすべてのカードが回収可能なカードなので、矢印をクリックするたびにランダムなカードを引っ張りたい。
また、API自体へのリンク:https://market.mashape.com/omgvamp/hearthstoneです。
var cardImage = '', cardName = '', cardType = '', cardFaction = '',
cardRarity = '', playerClass = '', artistName = '';
function cardInfo() {
$.ajax({
type: "POST",
url: "https://omgvamp-hearthstone-v1.p.mashape.com/cards? collectible=1",
headers: {
"x-mashape-key": "mXtnPm3ltOmshc9dQJjtVdKzfnhbp14UZncjsnfzwvp6uLiMwH",
Accept: "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
success: function (response) {
var obj = jQuery.parseJSON(response);
cardImage = obj.image;
cardName = obj.name;
cardType = obj.type;
cardFaction = obj.faction;
cardRarity = obj.rarity;
playerClass = obj.playerClass;
artistName = obj.artist;
$("#card-image").attr(src, obj.image);
$("#card-name").html(obj.name);
$("#card-type").text(obj.type);
$("#card-faction").text(obj.faction);
$("#card-rarity").text(obj.rarity);
$("#player-class").text(obj.playerClass);
$("#artist-name").text(obj.artist);
},
dataType: "json"
})
}
$(document).ready(function() {
$('#nextCard').click(cardInfo())
});
$(document).ready(function() {
$('#nextCard').click(cardInfo())
});
本当にありがとう、タイプがポストであることを知らなかった、それを動作させるためにはいくつかのことがあり、私はいくつかの睡眠不足エラーを犯したと思います。なぜそれがロードされるまでに数秒かかるのでしょうか?リクエストが速いのか、リクエストを速くする方法がありますか?再度、本当にありがとうございます。 – Wakata
私たちはすべてそこにいました:) 2つの理由があります。なぜなら、遅いと思う理由は2つあります。ブラウザが応答を受信してから2秒後に639KBのデータを受信するのに2秒かかります。最も単純な最適化は、データを再要求せず、既存のデータから別のカードを選択するだけです。もう1つは、サーバー上のデータをキャッシュし、サーバー側のスクリプトを使用して少量のデータしかロードしないようにいくつかのカードを返すことで、カードをあらかじめロードしてUIを応答性に保つことができます:)私は私の例を更新して、ただ1つのAJAXリクエストを実行するようにします。 – Brian
私の答えを更新しました - getCardDataは現在、単一のリクエスト(エラー処理を追加することもお勧めします) APIリクエストはDOMの準備が整う前にロードされ、1つのAJAXリクエストのみが実行され、すべてがより応答性になります。このようなことのための次のステップは、物をきちんとしてきれいにして、次のイメージをプリキャッシュするためにオブジェクトにリファクタリングすることです。2.答えがあなたの問題を解決したと感じたら、それは感謝される:) – Brian