HTML – функция JavaScript не обрабатывает responseText

avatar
Fraser
8 апреля 2018 в 12:06
70
1
0

Итак, у меня есть массив кнопок на моей веб-странице, который используется для отображения позиции робота посредством чтения текстового файла с комбинацией php/ajax. Скрипт устанавливает для кнопок один и тот же цвет, а затем меняет цвет кнопки, чтобы показать положение нашего робота. Вот фрагмент кода:

    function position(){
    setInterval(function(){ //wait function 
    document.getElementById("A").style.background ="#008000";
    document.getElementById("B").style.background ="#008000";
    document.getElementById("C").style.background ="#008000";
    document.getElementById("D").style.background ="#008000";
    var request = new XMLHttpRequest(); 
    request.onreadystatechange = function(){
        if (request.readyState == 4 && request.status == 200){ 
            console.log(request.responseText); 
            if (request.responseText == 'A'){
                document.getElementById("A").style.background ="#ff6600";
            } else if (request.responseText == 'B'){
                document.getElementById("B").style.background ="#ff6600";
            } else if (request.responseText == 'C'){
                document.getElementById("C").style.background ="#ff6600";
            } else if (request.responseText == 'D'){
                document.getElementById("D").style.background ="#ff6600";
            } else if (request.responseText == 'E'){
                document.getElementById("E").style.background ="#ff6600";
            } else { 
                document.getElementById("A").style.background ="#ff6600";
            }
        }
    }       
    request.open('POST', 'positionupdate.php', true); //script to read text file
    request.send(); 
},3000);}       //wait

Итак, я знаю, что php-скрипт работает, потому что журнал консоли показывает правильный символ, возвращаемый в текстовом файле. Однако мой скрипт просто не обрабатывает символ и постоянно возвращает условие «иначе».

Есть идеи?

Редактировать: Вот мой журнал консоли: enter image description here

Источник
deEr.
8 апреля 2018 в 12:08
0

Откуда вы знаете, что это состояние else?

xianshenglu
8 апреля 2018 в 12:10
0

покажи свой request.responseText

connexo
8 апреля 2018 в 12:10
0

Показать вывод console.log(request.responseText);.

Patrick Evans
8 апреля 2018 в 12:12
2

Вы должны обрезать текст ответа на случай, если вы получаете лишние пробелы, которые могут испортить ваши тесты if.

Fraser
8 апреля 2018 в 12:12
0

Я знаю, что это мое условие else, потому что моя кнопка «A» — это цвет, представляющий позицию.

Fraser
8 апреля 2018 в 12:13
0

Итак, в окне веб-страницы, используя F12 для просмотра журнала, я получаю: C 3RoboPot.php:177 1.50 RoboPot.php:209 C, который является символом в текстовом файле. (1,5 — другое считываемое значение)

D. Pardal
8 апреля 2018 в 12:15
0

Почему бы вам не использовать переключатель вместо if else?

Fraser
8 апреля 2018 в 12:19
0

Вскоре я попробую использовать операторы switch; я чувствую, что может быть более фундаментальная проблема, требующая решения.

Fraser
8 апреля 2018 в 13:11
0

Операторы switch создают ту же проблему; значение просто не сохраняется и не обрабатывается. Назначил ответ другой переменной, затем вернул это значение, и оно все еще не работало.

Ответы (1)

avatar
Fraser
9 апреля 2018 в 11:29
0

Итак, проблема была в том, что я передавал объект, а не значение. В моем php-скрипте я смог решить эту проблему, используя функцию json_encode(), и взломал работающую программу.

Для справки, мой обновленный скрипт php:

<?php
$myfile = fopen("position.txt","r") or die("Unable to open file!");
$value = fread($myfile, filesize("position.txt"));
echo json_encode($value);
fclose($myfile);
?>