AJAX POST успешно, но SQL-запрос не выполняется - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть ajax jQuery post, который работает.Или, по крайней мере, я думаю, что это происходит (я получаю сообщение об успехе и вижу данные POST в браузере), но SQL-запрос для обновления базы данных не работает.

----------------- Функция с запросом POST -----------------------

var  examenid=examenid;
var checked=checked;

$.ajax
({
  type:'post',
   url:'updatecheckbox.php',
   data:{examenid: examenid,
         checked: checked
      },
  success:function(msg)
  {
      //if i set a message here, the message is displayed.
  }

------------------- файл updatecheckbox.php -------------------------

 <?php
        // set defaults 
        $checkDigitaal;
        $checked = true;
        $examenid = '0';

        //open connection to database
        $link = new mysqli("127.0.0.1","root","","sprint");
        if (!$link) 
        {
        echo "Error: Unable to connect to MySQL." . PHP_EOL;
        echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
            exit;
        }

    //check if the POST value is set
           if(isset($_POST['examenid'])){ $examenid = $_POST['examenid'];}
           if(isset($_POST['checked'])) {$checked = $_POST['checked'];}

        if($checked){$checkDigitaal = 0;}
        else{$checkDigitaal = 1;}

        //update query database
        $query="update examen set digitaal='$checkDigitaal' where examenid='$examenid'";  //your query

        if ($result = $link->query($query)) 
        {
                /* free result set */
            $result->free();
        }   

        mysqli_close($link);
 ?>

Я ожидаю, что запрос на обновление будет запущен, и в базе данных будет установлено значение 0 или 1.Но сейчас ничего не происходит.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

PHP-код не возвращает / не выводит никакого значения обратно в обратный вызов ajax, поэтому, возможно, функция success дублируется - используйте логику результатов работы в PHP, чтобы определить, что отправляется обратно.

Пример того, как вы могли бы реализовать stored procedures ниже с ответным сообщением для обратного вызова ajax ... untested

$.ajax({
    type:'post',
    url:'updatecheckbox.php',
    data:{
        examenid: examenid,
        checked: checked
    },
    success:function(msg){
        //if i set a message here, the message is displayed.
        console.info(msg)
    },
    error:function(err){
        console.warn(err);
    }
});



<?php

        $result = false;
        $checked = true;


        $link = new mysqli("127.0.0.1","root","","sprint");
        $examenid = filter_input( INPUT_POST, 'examenid', FILTER_SANITIZE_NUMBER_INT );
        $checked = filter_input( INPUT_POST, 'checked', FILTER_SANITIZE_NUMBER_INT );

        $checkDigitaal = $checked==1 ? 1 : 0;



        $sql='update `examen` set digitaal=? where examenid=?';
        $stmt=$link->prepare( $sql );

        if( $stmt && $examenid ){
            $stmt->bind_param( 'ii', $checkDigitaal, $examenid );
            $result = $stmt->execute();
            $stmt->free_result();
            $stmt->close();
        }

        $link->close();

        /* send appropriate message based upon query result */
        exit( $result ? 'happy' : 'sad' );
?>
0 голосов
/ 04 апреля 2019

Я изменил несколько строк кода, пожалуйста, проверьте, работает ли это или нет

----------------- Функция с запросом POST -----------------------

var  examenid=examenid;
var checked=checked;

$.ajax({
        type:'post',
        url:'updatecheckbox.php',
        data:{"examenid": examenid, "checked": checked},
         success:function(msg){
          //if i set a message here, the message is displayed.     
     });

------------------- файл updatecheckbox.php ------------------------ -

<?php
        // set defaults 
        $checkDigitaal;
        $checked = true;
        $examenid = 0;

        //open connection to database
        $link = new mysqli("127.0.0.1","root","","sprint");
        if (!$link) 
        {
        echo "Error: Unable to connect to MySQL." . PHP_EOL;
        echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
            exit;
        }

    //check if the POST value is set
           if(isset($_POST['examenid'])){ $examenid = $_POST['examenid'];}
           if(isset($_POST['checked'])) {$checked = $_POST['checked'];}

        if($checked){$checkDigitaal = 0;}
        else{$checkDigitaal = 1;}

        //update query database
        $query="update examen set digitaal=$checkDigitaal where examenid=$examenid";  //your query

        if ($result = $link->query($query)) 
        {
                /* free result set */
            $result->free();
        }   

        mysqli_close($link);
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...