Ajax & PHP - как вызвать window.open сразу после вставки данных на новую страницу - PullRequest
0 голосов
/ 15 февраля 2019

Моя проблема в том, что новое окно или страница всплывают каждый раз и без остановки - это было похоже на цикл.

, что делает моя страница, когда я вставляю данные, то она автоматически отправляется на страницу, и это работает хорошо, у меня есть код ajax, который автоматически отправляет данные без REFRESH.теперь, когда я добавляю это window.open, страница автоматически загружает новые страницы.

Каков мой ожидаемый результат, когда я вставляю данные, которые являются ТОЛЬКО разом, когда новая страница загрузится или всплывет.вот мои страницы, коды и код javascript

content.php здесь я получаю данные, отправляемые в базу данных

<div id=getdata></div>

скрипт

<script type="text/javascript">
  function dis()
  {
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET", "select.php",false);
    xmlhttp.send(null);
    document.getElementById("getdata").innerHTML=xmlhttp.responseText;
    window.open("http://localhost/ppa/movies.php", "", "width=1500px,height=1000px");  


  }

  dis();

  setInterval(function(){
  dis();
  },2000);
</script>

select.php это где xmlhttp.open получить URL.и именно здесь мне удается доставить мои данные, чтобы они были извлечены в content.php

<?php
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    $link = mysqli_connect("localhost","root","423");
    mysqli_select_db($link, "wasapp");

    $res = mysqli_query($link,"select * from announcement");

    while ($row = mysqli_fetch_array($res)) {
?>




  <div class="overlay">
      <br><br><br><br><br>
       <div class="container">
        <div class="row">
        <div class="text-center col-md-12">
             <div class="jumbotron" style="background-color: rgba(42, 44, 45, 0.9); color: #71777f">
              <h3><?php echo $row['additional_info']; ?></h3>
            </div>
        </div>
        </div>
    </div>  


  </div>

<?php } ?>

announcement.php

именно здесь я вставляю данные, чтобы они отправлялись вбаза данных ..

    $stmt1 = $pdo->prepare("insert announcement set additional_info=:addInfo");

ничего особенного в этом коде, подробнее только о запросах и вставках

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете создать глобальную переменную, в которой можно назначить количество записей в базе данных.При каждом вызове ajax вы должны получать общее количество записей из php-файла.Вы можете перепроверить эти переменные.Если глобальная переменная и переменная ответа ajax совпадают, вы не должны открывать окно, иначе вы должны.Посмотрите на код ниже:

<script>
        var recordCount = 0; 
        function dis()
        {
            var responseRecordCount = 0;
            xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                responseRecordCount = this.responseText.sqlRecordCount; // sqlRecordCount is dummy variable. You should pass count of database records here
            };
            xmlhttp.open("GET", "select.php",false);
            xmlhttp.send(null);
            if (recordCount != responseRecordCount) {
                document.getElementById("getdata").innerHTML=xmlhttp.responseText;
                window.open("http://localhost/ppa/movies.php", "", "width=1500px,height=1000px");                          
            }
        }

        dis();

        setInterval(function(){
        dis();
        },2000);
    </script>

Надеюсь, это поможет вам сделать этот подход для улучшения вашего кода.

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