2011-11-12 2 views
1

OK, поэтому я создаю все веб-приложение с использованием AJAX с некоторой локальной памятью и т.д.

Проблемы, которую я имею иногда я дважды нажмите или нажмите рычажки и вперед, которые вызывают вызов $ .post.

Проблема заключается в том, что при обратном вызове они возвращаются и продолжают переписывать друг друга до тех пор, пока последний вызов не вернется.

Очевидно, что это проблема. Что мне нужно сделать, это отменить текущие вызовы POST и просто получить последний обратный вызов.

Я пробовал:

// Make Call: 

if(call != undefined){ 
    call.abort(); 
} 
var call = $.post(url,{do:'stuff'},function(response){ 
    // callback stuff: 
},'json'); 

твердит его неопределенными независимо, я предпочитаю использовать .POST чем .ajax, если это возможно.

Спасибо за вашу помощь заранее!

+0

Есть ли опечатка в вашем коде вокруг «материала»? – mjwills

+0

исправил это, спасибо –

ответ

1

Просто отмените событие click на клик, повторно привяжите его при обратном вызове.

1

Одна вещь, которую вы можете сделать, если отмена не улавливает все ваши ожидающие XHR: увеличивайте счетчик и передавайте его на ваш сервер, чтобы сохранить старые ответы от clobbering новых. Просто добавьте в свой сервер значение счетчика в ответе, а затем ваш обратный вызов может сравнить его с местным счетчиком перед перезаписью.

Смежные вопросы