Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 04.03.2015
Сообщений: 47

Неправильно работает объект XMLhttprequest

05.12.2016, 17:39. Показов 687. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

почему-то неправильно работает объект XMLhttprequest.
Страница со слайдами, при нажатии на кнопки слайды должны переключаться по идее. Переменная slideNumber изменяется - я проверял. Запускается скрипт photo.php, а в $_GET['slide'] всё время почему-то одно и тоже значение - 1. И оно не меняется. Тоесть, отправляется GET-запрос с разными значениями, а в скрипте photo.php всё время одно и тоже первое значение. Из-за чего это может происходить?

Вот такой код:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
...
<h1>Экзотические места</h1>
        <article>
            <img src = "photo/1.jpg">
            <div id = "slide">
                Нажмите на кнопку, чтобы показать картинку.
            </div>
            <a href="#" onclick="return previousSlide()">Пред</a>
            <a href="#" onclick="return nextSlide()">След</a>
        </article>
        <script type="text/javascript">
            var req = new XMLHttpRequest();
            var slideNumber = 0;
            /* Функции для изменения переменной, которая нужна для перехода по слайдам. */
            function nextSlide() {
                if (slideNumber == 5) {
                    slideNumber = 1;
                }
                else {
                    slideNumber += 1;
                }   
                goToNewSlide();
                history.pushState(slideNumber, null, "http://localhost/XMLhttpRequest2/puteshestviya" + slideNumber + ".html");
                return false;
            }
            
            function previousSlide(){
                if ((slideNumber == 1) || (slideNumber == 0)){
                    slideNumber = 5;
                }
                else {
                    slideNumber -= 1;
                }
                goToNewSlide();
                history.pushState(slideNumber, null, "http://localhost/XMLhttpRequest2/puteshestviya" + slideNumber + ".html");
                return false;
            }
            
            function goToNewSlide(){
                req.open ("GET", "photo.php?slide=" + slideNumber, true);
                req.onreadystatechange = newSlideReceived;
                req.send();
            }
            
        /* Функция добавляет слайд на страницу. */
            function newSlideReceived() {
                if (( req.readyState == 4) && (req.status == 200)) {
                    document.getElementById("slide").innerHTML = req.responseText;
                }
            }
</script>
Скрипт photo.php:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
 
header('Content-Type: text-plain; charset = utf-8 ');
 
$slide = $_GET['slide'];
 
 
switch ($slide) {
 
case 1: {
 
echo '<figure>
<h2> Фото 1 </h2>
<img src = "http://localhost/html5/XMLhttprequest/photo/1.jpg">
</figure>';
 
 }
 
break;
 
case 2: {
 
echo '<figure>
<h2> Фото 2 </h2>
<img src = "http://localhost/html5/XMLhttprequest/photo/2.jpg">
</figure>'; }
 
break;
 
case 3: {
 
echo '<figure>
<h2> Фото 3 </h2>
<img src = "http://localhost/html5/XMLhttprequest/photo/3.jpg">
</figure>'; }
 
break;
 
case 4: {
 
echo '<figure>
<h2> Фото 4 </h2>
<img src = "http://localhost/html5/XMLhttprequest/photo/4.jpg">
</figure>'; }
 
break;
 
case 5: {
 
echo '<figure>
<h2> Фото 5 </h2>
<img src = "http://localhost/html5/XMLhttprequest/photo/5.jpg">
</figure>'; }
 
break;
 
default: echo 'Слайд не найден';
}
 
 
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2016, 17:39
Ответы с готовыми решениями:

Не работает XMLHttpRequest
Собственно вот простейший код: var text = document.getElementById(&quot;text&quot;); var xhr = new XMLHttpRequest(); ...

Неправильно работает скрипт
Учусь писать скрипты и попался в учебнике такой вот: function add_entry(surname,imya,middle) { row = table.insertRow(1); cell3 =...

setInterval работает неправильно!
Сдравствуйте!Решил поправтиковаться и написать программу которая должна создавать падающие снежинки на экране, вот код: window.onload =...

7
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
05.12.2016, 19:59
Вряд ли это поможет, но насколько я помню, в операторе switch() на PHP не используются фигурные скобки между case:
PHP/HTML
1
2
3
4
5
6
7
8
switch ($slide) {
 
case 1: echo '<figure>
<h2> Фото 1 </h2>
<img src = "http://localhost/html5/XMLhttprequest/photo/1.jpg">
</figure>';
break;
 case 2: ...
0
0 / 0 / 1
Регистрация: 04.03.2015
Сообщений: 47
15.12.2016, 17:14  [ТС]
Balanaar,

убрал скобки, но всё равно ничего не работает. Переменная в скрипте не изменяется. Всё время туда передаётся одно и то же значение. Из-за чего это может происходить?
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
16.12.2016, 09:46
tretstoun72, браузер? Ошибки в консоли?
Попробуйте закоментировать history.pushState или укажите здесь req.open ("GET", "photo.php?slide=" + slideNumber, true); абсолютный путь к photo.php.

Цитата Сообщение от tretstoun72 Посмотреть сообщение
Переменная в скрипте не изменяется.
Можете скрин с вкладки network приложить, когда кликаете на ссылках "Пред" и "След"?
Миниатюры
Неправильно работает объект XMLhttprequest   Неправильно работает объект XMLhttprequest  
0
0 / 0 / 1
Регистрация: 04.03.2015
Сообщений: 47
16.12.2016, 18:23  [ТС]
j2FunOnly, похоже да, ошибка в том, что браузер не может найти скрипт photo.php - он прибавляет его к уже изменённому url.

Если закомментировать history.pushState, то вообще ничего не происходит и ошибок не появляется.

Попробовал изменить путь к скрипту photo.php на такой:

"http://localhost/html_5/XMLhttprequest/photo.php?slide= " - никаких ошибок нет и ничего не происходит. Если при этом убирать метод pushState, то тоже никакого эффекта нет. Никаких ошибок не появляется и ничего на экране не появляется.

Если изменять путь на абсолютный (C:/Program Files...), то появляется ошибка, что подобные запросы могут происходит только по протоколам: http, и др.


Это скриншот после того, как я сделал исправления.
Миниатюры
Неправильно работает объект XMLhttprequest  
0
0 / 0 / 1
Регистрация: 04.03.2015
Сообщений: 47
16.12.2016, 18:30  [ТС]
Это скриншот до того, как я делал изменения - с ошибками.

Непонятно - на первом скриншоте вроде как всё ок, но на экране ничего нет почему-то.
Миниатюры
Неправильно работает объект XMLhttprequest  
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
17.12.2016, 19:13
Цитата Сообщение от tretstoun72 Посмотреть сообщение
на первом скриншоте вроде как всё ок, но на экране ничего нет почему-то
Значит ваш скрипт работает правильно, что приходит в ответе от сервера смотрели?
0
0 / 0 / 1
Регистрация: 04.03.2015
Сообщений: 47
19.12.2016, 12:57  [ТС]
j2FunOnly,

там в ответе всё правильно, ошибка в синтаксисе была. (кроме пути к файлу ) У меня было написано:

req.onreadystatechange = newSlideReceived(); Функция сразу запускалась и поэтому ничего не выводила на экран.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2016, 12:57
Помогаю со студенческими работами здесь

Неправильно работает код
Доброго всем времени суток. Помогите разобраться. Есть код: vari = 1; function test() { for (i = 1; i &lt;= 100; i++) { ...

Неправильно работает код
Подскажите где ошибка, код должен передовать вопросы в одну переменную, а ответы в другую, но в переменных только первые вопрос и ответ....

Помогите.Скрипт неправильно работает
Помогите новичку.Значения из формы почему-то вводятся не как числа,а как строки. Соответственно 3+5=35. Что делать ? &lt;SCRIPT...

Неправильно работает смена стиля элемента
Как сделать что бы скрипт изменял стили ВСЕХ элементов, у которых класс: class1? Нужно что бы размер шрифта менялся у всех цифр, а не...

Слайдер неправильно работает
слайды переключаются автоматически каждые 5 секунд, если несколько раз попробовать самому переключать между слайдами, то слайды начинают...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru