1

基本的に、次のようなjsonを介して画像のIDを渡すhrefがあります。

http://localhost:4567/public/vote.html?image=50b4d006fa4634bb130000fe

次に、id に基づいて mongo でイメージを作成/更新し、ユーザー/訪問者が投票した場合に更新します。

現時点では、vote.html 内のコードが処理された後にリダイレクトするために silex を使用しています。

 return $app->redirect('popular.html'); 

jqueryを使用してリダイレクトせずに上記のhrefを処理できるかどうか疑問に思っていたので、基本的に投票をクリックすると、ユーザーがリダイレクトされたことを知らなくても番号がシームレスに変更されます。

答えた

あいまいな質問で申し訳ありませんが、私の答えは以下に投稿された原則から来ています。

href を変更して、投票のクラスと画像の ID を割り当てました。

<a class="vote" id="' + image.id + '" href="#">

次に、これを私の $(document).ready 関数に追加しました:

$(".vote").live('click', function() {
        $('span', this).toggle();
        $.ajax( site_url + 'vote.html?image=' + $(this).attr('id'));
    });

これは理論上、mongo オブジェクトの ID を使用し、オブジェクトがクリックされるたびにそれを URL に追加し、リダイレクトせずに href を処理します。

4

3 に答える 3

2

はい、少しの jQuery を使用して問題を解決できます。投票ボタン/画像の HTML マークアップの例を提供していないため、これは非常に不自然な例です。

$(function() { // anything in here will happen once the DOM is ready
    $('.vote').click(function(e) { // assign click for each elem w/ class "vote" 
        e.preventDefault(); // prevent default action (if elem was an anchor)
        // Make the server request asynchronously
        var $this = this;
        $.ajax({
            type: "POST", // or "GET"; or use $.post()/$.get() 
            url: $(this).attr("href"), // the href of the anchor
            data: null // or JSON here (e.g. { 'id': 'abcde' })
        }).done(function(data) { // vote.html should be image data of some kind
            // update the DOM with the new vote image
            // possible example if response was base64 encoded png
            $($this).closest('image').attr("src", "data:image/png;base64," + data);
        });
    });
});
于 2012-12-03T18:59:33.903 に答える
0

AJAX を使用して番号を更新しないのはなぜですか? jquery.ajax()で本当に簡単

于 2012-12-03T17:07:12.300 に答える
-1

次のように、jQuery でクリック イベントをオーバーライドできます。

$("a").click(function(event) {
  event.preventDefault();
  // DO MY STUFF HERE
});
于 2012-12-03T16:48:25.640 に答える