Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Only perform jQuery ajax query once

How can I get jQuery to only do an ajax query one time?

Right now it contacts the server every time a user toggles "Comments (X)"

// Replies - Toggle display of comments
$('.info .reply').click( function() {
    $('.reply', this.parentNode.parentNode).toggle();
    return false;
});

// Load comments
$('.info .reply', this).mousedown( function() {
    var id = $('form #id', this.parentNode.parentNode).val();
    $.ajax({ url: location.href, type: 'post', data: 'id=' + id, dataType: 'json',
        success: function(data) {
            for (var i in data) {
                // Do AJAX Updates
            }
        }
    });
    return false;
});

I'm thinking I can somehow put an unbind() event in here after the ajax data is loaded, but I'm not sure where!

Thanks for your help!

like image 438
ensnare Avatar asked Dec 29 '22 06:12

ensnare


2 Answers

In the success function after the for loop seems like a good place.

    success: function(data) {
        for (var i in data) {
            // Do AJAX Updates
        }
        $('.info .reply').unbind();
    }

EDIT: This is only if you really must do it this way, .one() seems like a better choice.

like image 156
Peter C Avatar answered Dec 30 '22 18:12

Peter C


Maybe you are looking for one()

like image 40
Dr.Molle Avatar answered Dec 30 '22 18:12

Dr.Molle