Witam, Mam poniższy skrypt JS, który ma wykonywać się rekurencyjnie do czasu aż pewna zmienna nie osiągnie wartości 0:
<script type="text/javascript"> $(function() {
$( "#progressbar" ).progressbar({
value: <? echo $progress; ?>
});
});
function send_newsletter(n) {
if($("#ajax_send").button( "option", "disabled") == true) {
return false;
}
$("#ajax_send").button( "option", "disabled", true );
$("#ajax_send").button( "option", "label", "Wysy\u0142anie newsletter'a... proszę czekać" );
//Ajax request
$.getJSON("<? echo URL::site(Request::instance()->uri); ?>",
{
ajax_send: "1"
},
function(data) {
//Uzupelnij dane poszczegolnych adresow e-mail
$.each(data.emails, function(key, value) {
//alert(value.status);
if(value.status == 1) {
$("#status-"+key).text("wiadomo\u015bć wysłana");
}
if(value.status == 0) {
$("#status-"+key).html("
<span style='color:#D10000;font-weight:bold'>ERROR:
</span> "+value.error);
}
});
//Zmien wartość progress bara
$("#progressbar").progressbar( "option", "value", data.progress);
if(data.to_send == 0) {
//Wlacz przycisk, jezeli wszystko poszlo OK
//$("#ajax_send").button( "option", "disabled", false );
$("#ajax_send").button( "option", "label", "Wszystkie wiadomo\u015bci zostały wysłane." );
} else {
setTimeout(function() {
send_newsletter(0);
}, 10000);
}
return data.to_send;
});
}
$("#ajax_send").click(function() {
send_newsletter(0);
});
Powyżej znajduje się setTimeout(), który teoretycznie powinien wywołać funkcję ponownie, jednak tak się nie dzieje. Po uruchomieniu funkcji za pomocą kliknięcia w button #ajax_send funkcja wywołuje się tylko jeden raz. W setTimeout() jeżeli dam alert(); pokazuje go...
Dzięki za wszelką pomoc (IMG:
style_emoticons/default/wink.gif)