2016-12-15 5 views
0

FreeCodeCampでランダムクォートジェネレータを完了しようとしています。私はかなり持っていますが、私はもう一歩進んでボタンの背景画像を変更したいと決めました。バックグラウンドimgが最初に設定された最初の呼び出しからバックグラウンドimgがキャッシュされていると思います。そのため、私がボタンをクリックするたびに、ブラウザは本質的にサイトを再訪して新しいimgを引っ張る代わりに、キャッシュされたimgを再ロードしています。jQueryでのキャッシングからの画像の停止

私が使用しているソースは、訪問ごとに異なるイメージを返すサイトです。

私はURLの最後にタイムスタンプを追加しようとしましたが、サイトは無効なアドレスイメージを投げてしまいました。

<html> 
    <head> 
    </head> 
    <body> 
    <div class="container-fluid" id="mainDiv"> 
    <div class = "row text-center"> 
     <div class = "col-xs-12 well" id = "quote"> 
     The quote will go here 
     </div> 
    </div> 
    <div class = "row text-center"> 
     <div class = "col-xs-12"> 
     <button id = "getQuote" class = "btn btn-primary"> 
     Get Quote 
     </button> 
     </div> 
    </div> 
    </div> 
    </body> 
</html> 

body{ 
    background-image: ; 
} 
#mainDiv{ 
    margin: 0 auto; 
    max-width: 400px; 
    margin-top: 200px; 
} 

$(document).ready(function(){ 
    $('body').css('background-image', 'url("https://source.unsplash.com/random")'); 
    $.getJSON("http://quotes.stormconsultancy.co.uk/random.json", function(json){ 
    $("#quote").html('"' +json.quote + '"<br> - ' + json.author); 
    }); 
    $("#getQuote").on("click", function(){ 
    $('body').css('background-image', 'url("https://source.unsplash.com/random")'); 
    $.getJSON("http://quotes.stormconsultancy.co.uk/random.json", function(json){ 
     $("#quote").html('"' +json.quote + '"<br> - ' + json.author); 
    }); 
    }); 
}); 

答えて

0

タイムスタンプは、それが302リダイレクトされ、クライアント側のスクリプトは、302リダイレクトを傍受することはできませんので、それが自動的に解決されていて、そのことについて何もできないが動作しません。あなたはサーバ側で302のヘッダを読むことができます。サーバー上で画像を取得し、302を解決して正しいURLで応答させることができます。

あなたがAPIを使用している場合は、Ajaxを使用して試すことができます:

$.ajax({ 
    url: "https://api.unsplash.com/photos/random?client_id=32d223323", 
    cache: false, 
    success: function(result){ 
    $('body').css('background-image', 'url("' + result.urls.full + '")'); 
    } 
}); 
関連する問題