投稿またはAJAXの必要性を回避する回答を追加するだけで、どちらもなしでこれを実行できることを示します。
画像タグ通信
イメージタグを使用してサーバーと通信できます。
<div class="image">
<img src="image/to/be/favourited.jpg" data-aid="123" />
<a href="favoriet-fallback.php?aid=123">
<img src="/media/img/icons/twitter.png" />
</a>
</div>
<script>
jQuery(function(){
jQuery('.image > a').click(function(){
var
img = $(this).siblings('img'),
src = img.attr('src'),
aid = img.attr('data-aid'),
esc = window.encodeURIComponent ? encodeURIComponent : escape
;
/// here you have the choice of using the image to be favourited or
/// the twitter icon. I chose the favourited image for this example.
img.attr('src', 'favoriet.php?src=' + esc(src) + '&aid=' + esc(aid) );
return false;
});
});
</script>
このコードでは、簡単な方法を使用してfavoriet.php
指定されたイメージを返すように変更する必要があります。100%必要ではありませんが、を作成することをお勧めします。src
readfile
favoriet-fallback.php
スクリプト/画像タグの挿入
新しいスクリプトまたは画像タグを挿入して、リクエストを実行することもできます。
<script>
jQuery(function(){
jQuery('.image > a').click(function(){
var
img = $(this).siblings('img'),
src = img.attr('src'),
aid = img.attr('data-aid'),
esc = window.encodeURIComponent ? encodeURIComponent : escape
;
/// you could build a script tag or a pixel image here
var script = document.createElement('script');
script.src = 'favoriet.php?src=' + esc(src) + '&aid=' + esc(aid);
jQuery('body').append(script);
return false;
});
});
</script>
この例は明らかにfavoriet.php
、既存のページと対話できる本格的なJavaScriptを返す必要があることを意味します。
上記は、POSTの代わりにGETリクエストを使用する愚かな例のほんの一部です。これには、メリットとデメリットもあります。これらの例はどちらもjQueryを必要としません。私は、速度と明確さのためにjQueryを使用しました。
Hugoのデザインははるかにエレガントですが、AJAXが唯一の方法ではないことを証明するためだけにこれらについて言及します。