Как изменить содержимое страницы с другой страницы


Я пытаюсь добавить эту функциональность в свою корзину PHP

Предположим, у нас есть две страницы: catalog.php и cart.php

Что я хотел бы сделать, так это:

пользователь нажимает на "Добавить в корзину" кнопку о catalog.php и запускает AJAX-запрос через jQuery, чтобы cart.php отправив это информация о том, какой продукт была добавлена (это все работает, как ожидалось) и делает cart.php страница обновлять себя, включая только что добавили товар без обновите страницу (это та часть, я не могу добраться до работа).

Если я положу две страницы рядом и нажму "Добавить в корзину", ничего не произойдет, только при обновлении страницы (cart.php ) Я вижу, что был добавлен новый продукт.

Есть ли способ заархивировать это?

РЕДАКТИРОВАТЬ: Я недостаточно ясно выразился, мне жаль, что мой плохой Страницы представлены стандартным образом, без рамок, без всплывающих окон "Приложение" работает так, как ожидалось, и это вряд ли будет проблемой для пользователей "Бок о бок" было просто потому, что я хотел бы знать, как получить эту функциональность так как я вижу, что буду использовать его в будущем практически для чего угодно (манипуляции DOM с страницей из PageA, CSS и т. Д.)

Author: sdrubish, 2013-04-13

2 answers

Вы можете смоделировать это, выполнив вызов AJAX на Cart.php, который проверяет (сеанс/бд), чтобы увидеть, было ли добавлено что-то новое.

Я бы предложил что-то вроде...

  • Cart.php делает вызов AJAX каждые 10-60 секунд и запрашивает полный список товаров в корзине.
  • Любые новые элементы добавляются в таблицу соответствующим образом (либо путем проверки идентификаторов продуктов, либо идентификаторов элементов заказа). Вам также следует обновить количество/и т.д.

Таким образом, неважно какой механизм используется для добавления товаров, корзина увидит их в ближайшее время.

Очевидно, что чем чаще вы проводите опрос, тем быстрее будет обновляться корзина, но тем большую нагрузку вы будете накладывать на систему.

Теперь причина, по которой это невозможно напрямую, заключается в том, что запросы AJAX всегда инициируются клиентом, а не сервером.

Существует еще один потенциальный обходной путь, который исключает частые опросы и дает почти мгновенные обновления, но это немного сложнее осуществлять.

Это известно как длительный опрос (см. этот ответ ), и фактически происходит следующее...

  • Клиент отправляет AJAX ("A") запрос на сервер для получения информации о корзине.
  • Сервер принимает запрос, но ничего не делает (как если бы обрабатывался длительный скрипт)
  • Когда новый товар в корзине покупок поступает через AJAX ("B"), сервер отвечает на запрос A с подробной информацией, и страница корзины обновляет таблицу следующим образом подходящий.
  • Если в течение разумного времени ожидания (30-120 секунд) не обнаружено никаких действий с корзиной, сервер отвечает "Нет операции" и закрывает соединение.
  • Какой бы ответ ни получил клиент, он немедленно открывает новый запрос AJAX и начинает все сначала.

По сути, ваш PHP-скрипт затем проверяет базу данных/сеанс/и т. Д. На наличие обновлений, а клиент ожидает только на "медленном" сервере. Вот как twitter реализует свои различные каналы через API - каждый новый твит возвращается в новой строке по мере их создания.

Обратите внимание, что это может быть непросто реализовать, так как вы просто переносите опрос с клиента на PHP, но это делает его более элегантным с точки зрения JavaScript, устраняет задержку и уменьшает ненужные сетевые издержки.

 0
Author: Basic, 2017-05-23 11:57:17

Последний раз, когда я проверял, только страницы, открытые с помощью window.open (или открытые по ссылке <a target="_blank">), могут общаться друг с другом.

Итак, в catalog.php позвонить cart = window.open('cart.php'), cart содержит объект окна страницы, которая его открыла, поэтому вы можете сделать:

cart.document.getElementById('whatever').innerHTML = '<p> new content</p>';

Чтобы заставить окна общаться друг с другом бок о бок без открытия одного другого, вы можете использовать локальное хранилище HTML5, но для этого требуется более совершенное волшебство.

 0
Author: Mark Harviston, 2013-04-13 02:21:03