Когда один div загружается, другой div удаляется - PullRequest
0 голосов
/ 28 ноября 2018

Нажмите здесь: henriquecosta.kdhost.eu.org , введите номер 00008513 и выберите переключатель и введите, затем выберите любой 8-значный номер и тип.Эта часть прекрасно работает после такой большой жертвы для меня, я не программист.Проблема в том, что при загрузке другого div предыдущий удаляется.Мне нужно, чтобы все разделы оставались на странице, всего их будет 40.Вчера я не смог решить с локальным хранилищем, я думаю, что это решение, после этого сценарий будет закончен.Ну, я доволен тем, что получил до сих пор.Если у кого-нибудь есть какие-либо советы, чтобы дать мне, я буду очень благодарен!Спасибо.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
</head>
<body>
<script>
var form = document.querySelector('form');
form.addEventListener('submit', function(e) {
  e.preventDefault(); // <--- isto pára o envio da form

  var url = this.action; // <--- o url que processa a form
  var formData = new FormData(this); // <--- os dados da form
  var ajax = new XMLHttpRequest();
  ajax.open("GET", url, true);
  ajax.onload = function() {
    if (ajax.status == 200) {
      var dados = JSON.parse(ajax.responseText);
      alert('Dados enviados:\n' + JSON.stringify(dados, null, 4));
    } else {
      alert('Algo falhou...');
    }
  };
  ajax.send(formData);
});

</script>
<form action="index.php">
Cartao:<input size="7" name="cartao" value="" required="" pattern="[0-9]{8}" type="text">
<input value="01" name="armario" type="radio" />01
<input value="02" name="armario" type="radio" />02
<input value="03" name="armario" type="radio" />03
<button type="submit">Enviar</button>
</form>

<table width=100% border=1>
<tbody>
<tr align=center valign="middle">
<td width=33%><div id="01"></div></td>
<td width=33%><div id="02"></div></td>
<td width=33%><div id="03"></div></td>
</tr>
</tbody>
</table>


<?php
if (isset($_GET['cartao'])):
$radioValue = $_GET['armario'];
$radiovalor = '"'.$radioValue.'"';
$file = 'banco.txt';
$searchfor = $_GET['cartao'];
//header('Content-Type: text/plain');
$contents = file_get_contents($file);
$pattern = preg_quote($searchfor, '/');
$pattern = "/^.*$pattern.*\$/m";
            if(preg_match_all($pattern, $contents, $matches)):
            json_encode($matches[0]);
            $resultado = str_replace(array('"',' \r','[', ']'), '', htmlspecialchars(json_encode($matches[0]), ENT_NOQUOTES));  
else:
            $resultado = $_GET['cartao'];
   endif;
        else:
           echo '';
           endif;

// file_exists
if (isset($_GET['cartao'])) {
$path = './fotos/';
$recebe = $_GET['cartao'];
$img = $path.$recebe.".jpg";
if (file_exists($img)) {
          $foto = '"<img width=80 height=80 src="'.$img.'">';                          // existe
} else {  $foto = '&nbsp;&nbsp;<img width=80 height=80 src="./fotos/ausente.jpg">';    // não existe
}
}
?>

<script>
var x = '<?php echo $resultado, $foto; ?>'; 
var z = '<?php echo $radioValue; ?>';
document.getElementById(z).innerHTML += x;
</script>

</body>
</html>

1 Ответ

0 голосов
/ 28 ноября 2018

В вашем коде есть несколько проблем, о которых вы, вероятно, не знаете.

Прежде всего, вся ваша страница перезагружается каждый раз, когда вы нажимаете кнопку "Enviar", потому что ваш javascript неправильно предотвращает действие по умолчанию.

Для этого верните false вконец функции:

var form = document.querySelector('form');
form.addEventListener('submit', function(e) {
  e.preventDefault(); // <--- isto pára o envio da form

  var url = this.action; // <--- o url que processa a form
  var formData = new FormData(this); // <--- os dados da form
  var ajax = new XMLHttpRequest();
  ajax.open("POST", url, true);
  ajax.onload = function() {
    if (ajax.status == 200) {
      var dados = JSON.parse(ajax.responseText);
      alert('Dados enviados:\n' + JSON.stringify(dados, null, 4));
    } else {
      alert('Algo falhou...');
    }
  };
  ajax.send(formData);
  return false;
});

При этом вся страница не будет перезагружена.

Во-вторых, ваш сервер всегда возвращает полную HTML-страницу, вместо того, чтобы различать, является лиURL-адрес был открыт при первом открытии страницы или при получении запроса от вашего скрипта.

Если isset($_POST['cartao'] истинно, то запрос пришел из вашего javascript, и вы должны вернуть объект JSON, содержащий соответствующие данные, и встроить html в свой javascript и добавить его в свою таблицу.

Я знаю, что все это немного сбивает с толку, если вы не программист, но я надеюсь, что смогу указать вам верное направление.
Как только вы вернете объект JSON со своего сервера, я с удовольствиемпомочь вам сделать HTML из него в javascript.

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