2016-08-16 3 views
4

У меня есть метод столба, как показано ниже:

$(".buttons").click(function(){ 
    var gettopic=$.post("topic.php", {id: topicId}, function(result){ 
    // codes for handling returned result 

    }); 
}) 

Я попытался прервать старый пост, когда новая кнопка нажата: Так что я устал

$(".buttons").click(function(){ 
    if (gettopic) { 
     gettopic.abort(); 
    } 
    var gettopic=$.post("topic.php", {id: topicId}, function(result){ 
     // codes for handling returned result 
    }); 
}) 

Однако это не работает. Поэтому я подумал, как это можно исправить?

+0

Возможный дубликат [прервать AJAX пост] (http://stackoverflow.com/questions/7565798/abort-ajax-post) –

ответ

3

Вы должны определить свою переменную gettopic вне click события

var gettopic; 
$(".buttons").click(function(){ 
    if (gettopic) 
    { 
    gettopic.abort(); 
    } 
    gettopic=$.post("topic.php", {id: topicId}, function(result){ 
       // codes for handling returned result 
    }); 
}) 
0

пост запрос, в зависимости от сервера и клиента пропускной способности & задержки, может произойти менее чем за 20мс. Время двойного щелчка по умолчанию Windows составляет 500 мс, поэтому нет, вы не можете и не должны ожидать, что сможете его прервать.

0
var xhr = []; 

$('.methods a').click(function(){ 
    var target = $(this).attr('href'); 

    //if user clicks fb_method buttons 
    if($(this).hasClass('fb_method')){ 
     //do ajax request (add the post handle to the xhr array) 
     xhr.push($.post("/ajax/get_fb_albums.php", function(msg) {       
      $(target).html('').append(msg).fadeIn(); 
     })); 
    } else { 
     //abort ALL ajax request 
     for (var x = 0; x < xhr.length; x++) 
     { 
      xhr[x].abort(); 
     } 
     $(target).fadeIn(); 
    } 
    return false; 
}); 

Использование JQuery вы можете использовать таким образом:

var xhr = $.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John&location=Boston", 
    success: function(msg){ 
     alert("Data Saved: " + msg); 
    } 
}); 

//kill the request 
xhr.abort() 
Смежные вопросы