Интересен проблем с JS скрипт

  • Автор Автор Anonymous
  • Начална дата Начална дата
A

Anonymous

Guest
Вече наистина ми избушиха нервите с това.
Ето Ви що годе идеята ми
var errors;

function() {
// ajax заявка, резултата е true или false
if (data == false) { errors++; }
}
alert(errors); // ако махна алерт-а, скрипта винаги показва 0, ако го сложа тоя алерт показва 0, а следващия смята правилно
if (errors == 0) { /* тук всичко е ок */ }
else { alert(errors); } // ако го няма горния алерт, ДО този алерт не се стига, ако го пусна горния, този показва правилно
в коментарите се опитах да изложа и проблема.
Ако го няма първия алерт, скрипта винаги показва, че errors е равно на 0. Ако го сложа (както е в момента), първия алерт показва 0 ,а втория (който в последните две проверки) си показва правилно, колкото пъти е била увеличена проверката.
Не знам какво е това, за пръв път имам такъв проблем, просто вече нямам и на идея от къде идва проблема.
 
AJAX заявката се извършва асинхронизирано => скрипта си тече докато се пращат данните от сървъра. Първия alert спира скрипта докато не бъде маханат от потребителя и през това време AJAX заявката е изпълнена, а ако го няма AJAX заявката не е изпълнена и за това дава нула. Решението е да направиш заявката синхронизирана, което с jquery се прави така:

$.ajax({
async: false
});
 
Леле, супер мега адски ти благодаря I_V_O.
Господ здраве да ти дава, все така да си полезен :)
 

Back
Горе