別の Web サイトから映画のポスターを読み込んで、自分の Web サイトに表示しようとしています。ポスターの URL を取得し、mySQL データベースに保存しました。ユーザーがポスターを探すと、スクリプトはデータベースを検索し、ajax を介して完全な URL を取得し、画像を表示するために IMG タグを設定します。
リンクを取得した 2 つの Web サイトの 1 つが「アクセスする権限がありません... 」を返すことに気付きました。しかし、ブラウザのアドレス バー内に同じリンクをコピーすると、画像が表示されます。いくつかの調査の後、これはクロスドメインの問題によるものであると推測しました。最も一般的な解決策は JSONP であると読んだので、次のコードを作成することができました。2 つのリンクが表示される場合があります。最初のリンクは機能し、2 番目のリンク (filmup.it) は許可エラーを返します。(この問題は「www」がないためではありません)。
HTMLコード
<input type="text" id="link" value="http://www.cinemadelsilenzio.it/images/film/poster/11469_big.jpg" />
<!-- <input type="text" id="link" value="http://filmup.leonardo.it/posters/loc/500/dieanotherday.jpg" /> -->
<button class="searchbutton" type="button">Vai</button>
<br />
<img id="poster" src=""/>
<script type="text/javascript">
$(document).ready(function() {
$(".searchbutton").click(function(){
var _text = document.getElementById("link").value;
$.ajax({
url: 'img.php',
data: {parameter1: _text},
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'jsonpCallback',
success: function(){
alert("success");
}
});
});
});
function jsonpCallback(data){
$("#poster").attr("src", data);
}
</script>
PHP コード
// let's suppose that here there's a mySQL code to retrieve the links
if (isset($_GET['parameter1']) && isset($_GET['callback'])) {
$picture = $_GET['parameter1'];
echo $_GET['callback']."(".json_encode($picture).");";
}