#javascript #php #jquery #html #ajax
#javascript #php #jquery #HTML #ajax
Вопрос:
Я пытаюсь настроить систему вопросов / ответов и столкнулся с парой ошибок при настройке зависимых полей выбора
Я хочу отправить информацию о главном окне выбора (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 (Страница, которая содержит поля выбора) Я столкнусь с «No Request»! и после 3 дней поиска возможных правильных ответов я пока не смог ее решить: (
Заранее спасибо за любую помощь, которую вы можете предоставить.
PS: если кому-то нужна дополнительная информация, пожалуйста, скажите мне, я отправлю полный исходный код или поделюсь дополнительной информацией.
Комментарии:
1. Не должно ли это быть
data: { "mid": mid }
2. вы не отправляете правильные данные json здесь
data: 'mid=' mid
3. Этот вопрос был вызван проблемой, которую больше нельзя воспроизвести, или простой типографской ошибкой. Хотя здесь могут быть подобные вопросы по теме, этот был решен способом, который вряд ли поможет будущим читателям.
4. @mplungjan Я пробовал, не сработало: (
5. Вы устанавливаете тип содержимого в JSON, но отправляете строку запроса. Не перегружайте его, просто
$.post("DB.php", { mid }).done(...)
отредактируйте: извините, не видел всех этих комментариев при публикации
Ответ №1:
- Слишком много библиотек jQuery и bootstrap, и они являются версиями HTTPS и HTTP с разных CDN
- Синтаксическая ошибка в данных :
- Нет необходимости в синтаксическом анализе JSON, поскольку он используется по умолчанию
- Нет обработки ошибок для запроса. Если вы не хотите обрабатывать ошибки, сделайте это
$(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>
Комментарии:
1. Спасибо @mplungjan за ваш ответ, но у меня это не сработало, я полностью переписываю функцию Jquery, однако я снова сталкиваюсь с той же ошибкой: (
2. Каким бы ни был результат, предложенные мной изменения были необходимы. Вам необходимо отладить DB.php затем — включите отчет об ошибках и посмотрите в сетевом консоме на ответ