Отправка запроса Post на ajax на страницу PHP из поля выбора - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь настроить систему вопросов / ответов и столкнулся с парой ошибок при настройке зависимых блоков выбора
Я хочу отправить информацию о блоке выбора мастеров (Maters'id) в PHPфайл (DB.PHP) для обработки группы действий.

HTML-страница

<?php
require_once "DB.php";
require_once "functions.php";
require_once "stuQuestion.php";
if(! isset($_SESSION['student'])){
  redirect("stulogin/login.php");
  die;
}
$date = userGets($connection , "students_questions" , $_SESSION['students_id']);
?>

<html>
  <head> 


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>


      <script type="text/javascript">
      $(document).ready(function(){
       $('#masters').on('change',function() {

              var mid = $('#masters').val();
              $.ajax({
                  url: 'DB.php',
                  type: 'POST',
                  dataType: 'json',
                  contentType: 'application/json; charset=utf-8',
                  data: 'mid=' + mid
              }).done(function(user){
                  console.log(user);
                  user = JSON.parse(user);
                  $('#topics').empty();
                  user.forEach(function(topic) {
                      $('#topics').append('<option>' + topic.topic + '</option>')
                  })
              })
          })
      })

  </script>

</head>




                <select class="form-control" id="masters" name="masters" >
                    <option selected disabled>Choose Master</option>
                    <?php
                    //id='".$master['id']."' value = '".$master['id']."'
                    foreach($date as $master)
                    {
                        echo "<option id='".$master['id']."' value = '".$master['id']."'> ".$master['master']."</option>";
                    }
                    ?>
                </select>



          <select class="form-control" id="topics" name="topics">

          </select>

DB.php

function connectToDB() {
try {

    $connect = new PDO("mysql:host=127.0.0.1;dbname=university","root","");
    $connect->exec("set character set utf8");
    $connect->exec("set names utf8");
    $connect->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
    return $connect;

   } 
      catch (PDOException $e) 
   {
    die($e->getMessage());
   } }

$connection = connectToDB();

if(isset($_POST['mid'])){
$statment = $connection->prepare("SELECT  topic FROM students_questions 
WHERE user_id = " . $_POST['mid']);
$statment->execute();
$user = $statment->fetchAll(PDO::FETCH_ASSOC);

echo json_encode($user) ;
}
else
var_dump("No Request");


function userGets($conn , $table , $user_id = null) {
$statment = $conn->prepare("SELECT DISTINCT master FROM {$table} WHERE 
user_id = :user_id");
$statment->bindParam("user_id" , $user_id );
$statment->execute();
$master = $statment->fetchAll(PDO::FETCH_ASSOC);

return $master ? $master : false;
}

Когда я регистрируюсьв и перенаправить на stuIndex.php (страница, которая содержит поля выбора) я столкнусь с "Нет запроса"!и после 3-х дней поиска возможных правильных ответов я так и не смог решить :(

Заранее благодарен за любую помощь, которую вы можете оказать.
PS: если кому-то нужна дополнительная информация,пожалуйста, скажите мне, что я вышлю полный исходный код или поделюсь дополнительной информацией.

1 Ответ

0 голосов
/ 08 марта 2019
  1. Слишком много библиотек jQuery и начальной загрузки, и они являются версиями HTTPS и HTTP из разных CDN
  2. Синтаксическая ошибка в данных:
  3. Нет необходимости в синтаксическом анализе JSON, так как это значение по умолчанию
  4. Нет обработки ошибок для запроса.Если вы не хотите обрабатывать ошибки, сделайте это
$(function() {
  $('#masters').on('change', function() {
    var mid = this.value;
    if (val) {
      $.post('DB.php', {"mid": mid}, function(user) {
        $('#topics').empty();
        $.each(user,function(topic) {
          $('#topics').append('<option>' + topic.topic + '</option>')
        })
      })
    }
  })
})

, используя

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/popper.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...