Метод onchange не сработал

    <html>
     <head>
      <script>
       function showUser(str) {
       if (str == "") {
         document.getElementById("txtHint").innerHTML = "";
         return;
       } else { 
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","getuser.php?q = "+str,true);
        xmlhttp.send();
      }
    }
    </script>
    </head>
    <body>

    <form>
     <select name = "users" onchange = "showUser(this.value)">
     <option value = "">Select a person:</option>
     <option value = "1">Peter Griffin</option>
     <option value = "2">Lois Griffin</option>
     <option value = "3">Joseph Swanson</option>
     <option value = "4">Glenn Quagmire</option>
     </select>
    </form>
     <br>
     <div id = "txtHint"><b>Person info will be listed here...</b></div>

    </body>
    </html>

На странице отображается раскрывающийся список. Однако похоже, что метод onchange не срабатывает. Я не получаю отдачи от php. Код PHP здесь. https://www.w3schools.com/php/php_ajax_database.asp

Он запускается во фрагменте здесь.

Barmar 24.05.2018 04:15

Что делает getuser.php? getuser.php?q=3 дает ответ?

user3783243 24.05.2018 04:15

Вы видите какие-либо ошибки в консоли Javascript?

Barmar 24.05.2018 04:15

Код, который вы разместили здесь, выглядит нормально. Вероятно, проблема в вашей конфигурации.

Barmar 24.05.2018 04:21

get user.php возвращает таблицу. Вот рабочий образец w3schools.com/php/showphp.asp?filename=demo_ajax_mysql

CCNA 24.05.2018 04:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
48
1

Ответы 1

Кажется, у меня работает. Вы запускаете этот html-файл со своего локального компьютера? Я имею в виду, что когда вы загружаете этот html-файл в свой браузер, читает ли адресная строка file://<path_to_html> или http(s)://<path_to_html>?

Если это первое, то вам необходимо указать полный путь к серверу, на котором размещен getuser.php.

Когда я попробовал ваш код (запустил html с моего локального компьютера), событие onchange было запущено, и объект xmlhttp создавался, но HTTP-запрос не отправлялся на сервер (в соответствии с тем, что я видел с помощью инструментов разработчика браузера) . Затем я понял, что мне нужно изменить расположение getuser.php, потому что он должен быть размещен на сервере.

Это действительно комментарий, а не ответ.

Barmar 24.05.2018 04:25

Я запускаю его на своем сервере freeshell. maxfan.freeshells.org/showuser.html Это рабочий образец. w3schools.com/php/showphp.asp?filename=demo_ajax_mysql

CCNA 24.05.2018 04:25

@CCNA Ваш сервер отклоняет запрос. Ответ - 403. Посмотрите на свою конфигурацию, почему это так.

user3783243 24.05.2018 04:27

Я получаю http 403 с сервера, на котором размещен getuser.php. Кажется, что-то не так с конфигурацией сервера. imgur.com/a/6S7tQzO

thisisshantzz 24.05.2018 04:28

@ user3783243 ты прав. Я открыл консоль и вижу сообщение «Не удалось загрузить ресурс: сервер ответил статусом 403 (Запрещено)». Что я могу сделать?

CCNA 24.05.2018 05:01

Другие вопросы по теме