PHP - кнопка «Отправить» и модальное всплывающее окно AJAX в 2 браузерах PHP - PullRequest
0 голосов
/ 18 ноября 2018

Я новичок в php AJAX-кодировании, моя проблема в том, что у меня ДВА БРАУЗЕРА, во-первых, я хочу нажать кнопку отправки, и после этого я хочу, чтобы модал всплывал в другом браузере, так что в конечном итоге будет 2 браузера , просто как система чата. но это отличается, потому что я хочу только кнопку и всплывающее модальное окно.

так, например, вот моя кнопка

<button type="button" class="btn btn-primary">CLICK TO POPUP</button>

Мой модал

 <div class="modal" tabindex="-1" role="dialog">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <p>Modal body text goes here.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary">Save changes</button>
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

Как я могу открыть этот модал в другом браузере localhost

Ответы [ 3 ]

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

Сначала мы пишем слушатель в php-файле. затем он пишет процесс javascript, который заставит слушателя коснуться и получить обратную связь. Я отправляю сообщение сокета e 'getOpenPopUp', к которому мы подключены с помощью JavaScript. Сокет на стороне php отправляет сообщение openPopUp всем клиентам после его проверки. это сообщение получено на стороне javascript. Откроется всплывающее окно. мой английский не очень хорош Извините, я не мог сказать.

socket.php - Ratchet Class Храповик

<?php
    require __DIR__.'/vendor/autoload.php';

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;


use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;


class Application implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new \SplObjectStorage;
    }


    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg) {
        if ( $msg === 'getOpenPopUp' ) {
            foreach ($this->clients as $client) {
                $client->send('openPopUp');
            }
        }
    }

    public function onClose(ConnectionInterface $conn) {

    }

    public function onError(ConnectionInterface $conn, \Exception $e) {

    }
}


$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Application()
        )
    ),
    8080
);

$server->run();

App.js - WebSocket MDN Написание клиентских приложений WebSocket

var socket = new WebSocket('ws://localhost:8080');
var button = document.getElementById('button');


button.addEventListener('click', function() {
    console.log('click')
    socket.send('getOpenPopUp');
});


socket.onmessage = function(e) {
    console.log(e)
    if ( e.data === 'openPopUp' ) {
        UIkit.modal.confirm('UIkit confirm!');
    }
}
0 голосов
/ 18 ноября 2018

Более простой метод также управляется ajax, который каждую секунду записывает операцию в базу данных, и popUp показывается с данными из ajax, если их необходимо отобразить в popUp.

Но не очень рекомендуемый метод

Нажмите кнопку

$.ajax({ url: "saveClickButton.php" })

setTimeout(function() {
    $.ajax({ url: 'isClickButton' }).done(function(data) {
      if ( data === "true" ) {
          // Open Pop Up
      }
    });
}, 1000)
0 голосов
/ 18 ноября 2018

Параллельные снимки с php-сокетом, вы можете запускать результаты во всех открытых окнах.

PHP Socket

WebSocket

...