Добрый день.
Имеем форму и 2 простые функции:
<form method='get' name='slctsm'>
<select id='chsm' onChange='listsm(this);'>
<option selected style="color:#C60">Выберите тип</option>
<?php
$querytypesm = mysql_query("SELECT `id`,`typepoln` FROM `userstype`") or die(mysql_error());
while ($array_typesm = mysql_fetch_assoc($querytypesm)) {
echo "<option value='".$array_typesm['id']."'>".$array_typesm['typepoln']."</option>";
}
mysql_free_result($querytypesm);
?>
</select>
</form>
function listsm(list) {
var selection = list.options[list.selectedIndex].value;
if (selection != "None") {
var xmlHttp = new XMLHttpRequest();
var url = "/smt/sm/listsm.php?typesm="+escape(selection);
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var response = xmlHttp.responseText;
//alert(response);
document.getElementById("listsm").innerHTML = response;
}
}
}
}
}
function delsm() {
var smdel = document.getElementsByTagName("input");
for (var i=0; i<=smdel.length; i++) {
if ((smdel[i].type == "checkbox") && (smdel[i].id == "smiddel")) {
if (smdel[i].checked == true) {
if (confirm("Вы подтверждаете удаление сметы ?")) {
var smdelid = smdel[i].value;
var selopt = document.getElementById("chsm");
var xmlHttp = new XMLHttpRequest();
var url = "/smt/sm/listsm.php?delsm="+escape(smdelid);
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
return listsm(selopt);
}
else {
smdel[i].checked = false;
return false;
}
}
}
}
}
Первая функция при выборе пункта в select получает данные со страницы-обработчика данных и выводит их в index.php, вторая, при выборе checkbox'a, передает значение переменной на ту же страницу-обработчик и передает управление 1й функции, которая подгружает обновленные данные.
Обнаружился баг: иногда данные не обновляются автоматом. Т.е. что происходит: кликаю на checkbox, на окно confirm отвечаю "да", скрипт выполняется. При этом данные не обновляются! Выберешь что-нибуть в select, вернешься на нужный пункт - все ок.
Повторяю, происходит это не каждый раз, а примерно один раз из 5ти попыток. Код курил много раз, ошибок не вижу, работать должно как часы. Грешил на кэш, чистил - результата не принесло. Браузер opera.
В чем может быть дело ?
з.ы. Проскочила мысль: а что если в схеме "Функц. 2 -> php скрипт, удаление записи -> Функц. 1" функция 1 срабатывает раньше, чем пхп выполняет нужные операции - это бы все обьясняло)