Javascript Ajax представляет несколько отдельных форм (с одинаковой структурой формы) на одной странице PHP - PullRequest
0 голосов
/ 16 мая 2019

У меня есть страница PHP, где она имеет 12 отдельных форм с индивидуальным идентификатором формы и отдельным флажком, раскрывающимся списком и т. Д. Как на этом рисунке:

enter image description here

Теперь формы имеют зону обновления, которая в основном выбирает: имя, проверку включения или нет, время, затемнение и отправляет его в файл PHP для обработки.

Код для 3 зон

Таким образом, каждая форма имеет жестко запрограммированный URL-адрес LoopInfo.php? Id = 1, где id изменяется с 1 на 12, поэтому LoopInfo.php знает, какая кнопка обновления Zone нажата, и получает переменные из этой патентованной зоны

PHP Обработка и обновление XML

$id = $_GET['id'];
        // echo "ID - ".$id.'<br>';
        if($id > 0 && $id < 13)
        {
            // ZName - 1-12
            // Zmode - 1-12
            // ZTime - 1-12
            // ZDim  - 1-12
            $radio = $_POST['radio'];
            if($radio == 1)
            {
                $radio = 0;
            }
            // echo "Radio - ".$radio.'<br>';
            $zn = "zname".$id;
            $znam = $_POST["$zn"];
            // echo "Name - ".$znam.'<br>';
            $et = "EnTim".$id;
            $entim = $_POST["$et"];
            // echo "Timer - ".$entim.'<br>';
            $ot = "OnTim".$id;
            $ontim = $_POST["$ot"];
            // echo "On Time - ".$ontim.'<br>';
            $oft = "OfTim".$id;
            $oftim = $_POST["$oft"];
            // echo "Off Time - ".$oftim.'<br>';
            $ed = "EnDim".$id;
            $endim = $_POST["$ed"];
            // echo "Dim - ".$endim.'<br>';
            $d = "Dim".$id;
            $dim = $_POST["$d"];
            // echo "Dim Per - ".$dim.'<br>';
            $bin = $radio.$endim."00000".$entim;
            // echo "Binary - ".$bin.'<br>';
            $loopval = bindec($bin);
            // echo "Loop Val - ".$loopval.'<br>';
            // print_r($_POST);
            // die;
            $hunza=simplexml_load_file('LoopInfo.xml');
            if($hunza)
            {
                $zmode='Z'.$id.'Mode';
                $hunza->$zmode=$loopval;
                if($znam == '')
                {
                }
                else
                {
                    $name='Zname'.$id;
                    $hunza->$name=$znam;
                }
                if($entim == 1)
                {
                    $ontime='Z'.$id.'TimeOn';
                    $hunza->$ontime=$ontim;
                    $oftime='Z'.$id.'TimeOff';
                    $hunza->$oftime=$oftim;
                }
                if($endim == 1)
                {
                    $dimval='Z'.$id.'Dim';
                    $hunza->$dimval=$dim;
                }
                $hunza->asXML('LoopInfo.xml');
                // echo "<script>console.log('File Updated' );</script>";
                header("Location: index.php");
            }
            else
            {
                echo "Error Loading File";
                echo "<script>console.log('Error Load File' );</script>";
            }
        }

Таким образом, каждая форма представляет собой форму, которая при нажатии на зону обновления захватывает все данные формы, передает их в LoopInfo.php, а LoopInfo.php обновляет эти значения в XML в соответствующих тегах.

Цель: я пытаюсь добиться того, чтобы я мог обновить зону без перезагрузки страницы, то есть с помощью Ajax Javascript. Таким образом, Javascript захватывает все значения при обновлении из формы, создает Ajax-запрос и отправляет в один и тот же PHP-файл для обработки. Я пробовал поиск в Google "Javascript Ajax Multiple Form для отправки данных в одном PHP" безрезультатно. Можно ли получить универсальную функцию, которая при вызове получает идентификатор формы и узнает, что это ID 1, создал URL LoopInfo.php? Id = 1 и отправляет все данные формы вместе с этим запросом URL.

1 Ответ

0 голосов
/ 16 мая 2019

Проблема является причиной распространения события.Проверьте ваше событие - является ли оно причиной многократной отправки формы.Чтобы избежать этого места event.stopImmediatePropagation();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...