Почему ajax срабатывает сразу два раза?

106
12 августа 2019, 08:50

У меня есть php скрипт:

echo "<td> 
<select id='ocenka-day".$chislo."-" . $rowstudentlist['id'] . "'> 
<option disabled selected></option> 
<option value='0'>Н</option> 
<option value='2'>2</option> 
<option value='3'>3</option> 
<option value='4'>4</option> 
<option value='5'>5</option> 
</select> 
<script type='text/javascript' > 
  $( document ).ready(function() { 
        $('#ocenka-day".$chislo."-".$rowstudentlist['id']."').change(function(){ 
        var value = $(this).val(); 
         var vstudiin = '".$rowstudentlist['iin']."'; 
         var vday = ".$chislo."; 
         var vprepodiin = '".$iin."'; 
         var vdisid = $selectdis; 
         var vmonth = $selectmonth; 
         var vgr = $selectgr; 
         var vsemestr = $semestr; 
      $.ajax({type:'POST', 
      url:'my-journals-save.php', 
      data:{ocenka:value,day:vday,studiin:vstudiin,prepodiin:vprepodiin,disid:vdisid,month:vmonth,gr:vgr,semestr:vsemestr}, 
      dataType:'html', 
      success:function(){ 
            } 
      });});}); 
  </script> 
</td>";

Второй скрип для вставки в таблицу (my-journals-save.php):

$studiin=$_POST['studiin'];
    $ocenka=$_POST['ocenka'];
    $day=$_POST['day'];
....
require($_SERVER['DOCUMENT_ROOT'].'/connect.php');
$sql = pg_query($dbconn,"INSERT INTO journal (disid,disname,monthnumber,monthname,semestr,prepodiin,studiin,gr,day,ocenka,ugods,ugodp,ocenkadat)
VALUES ($disid,'$disname',$month,'$monthname',$semestr,'$prepodiin','$studiin','$gr',$day,$ocenka,$ugods,$ugodp,'$dat')");

Всё бы хорошо но в базу данных при вставке ставится сразу два раза,как я понял скрипт срабатывает два раза. даже по секундам одинаковый, только ID разные Скрипт вешается только один раз, скрипт не дублируется, ID элементов тоже похожие вопросы в stackoverflow прочитал:)

Answer 1

Решил проблему добавлением .unbind('change'); перед событием on.('change'...

Answer 2

Может в данном случае unbind срабатывает, но было бы логично использовать pg_close() в конце запроса.

READ ALSO
Сложить возведенное в степень число со последующим на единицу больше

Сложить возведенное в степень число со последующим на единицу больше

Здравствуйте, как я могу выполнить такое? 1^1=1 1^1 + 2^2=5 1^1 + 2^2 + 3^3=31 1^1 + 2^2 + 3^3 + 4^4=284

91
Как вывести данные из базы в формате JSON [дубликат]

Как вывести данные из базы в формате JSON [дубликат]

На данный вопрос уже ответили:

99
Построить дерево из строк

Построить дерево из строк

Подскажите, пожалуйста, как построить дерево из строк? Имеется массив:

110
Перехватить адрес в joomla

Перехватить адрес в joomla

Нужно настроить работу роутера в джумла таким образом, что бы, если мы заходим по адресу siteru?iffjj=3 адрес в адресной строке сохранялся, не редиректило,...

114