Показать сообщение отдельно
  #1 (permalink)  
Старый 02.11.2010, 14:18
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Баг или проблема в другом ?
Добрый день.
Имеем форму и 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 срабатывает раньше, чем пхп выполняет нужные операции - это бы все обьясняло)
Ответить с цитированием