Entonces, lo que tengo son muchas páginas como esta, con parámetros GET: benchmark.php?game_id=87 que muestran la información sobre el juego en particular (la información está en una base de datos) y también contiene un botón Editar.
El botón Editar abre una nueva ventana usando JS window.open("edit_game.php?game_id=87",...) La ventana Editar contiene algunos cuadros de texto para agregar/modificar datos y un botón Guardar.
El comportamiento deseado aquí es que cuando presiono el botón Guardar en la página edit_game.php , no solo la información se guarda en la base de datos (esto funciona), sino que también se actualiza la página benchmark.php?game_id=87 para que el la información mostrada es real. No sé cómo hacer 'enviar en la página x, la página y es consciente y se actualiza'.
Supongo que debería usar AJAX para esto, pero no sé por dónde empezar. Lo que probé es algo como esto.
setInterval( function(){ $('#refresh_station').load('game_information.php'); }, 2000); que cada 2 segundos refresca la información presente en benchmark.php?game_id=87 pero encuentro esto muy ineficiente ya que refresca la información incluso si no ocurrieron modificaciones.
¿Es esta la única manera de abordar esta situación?
Editar: debo mencionar que no se supone que edit_game.php?game_id=87 se cierre ni nada después de presionar Guardar. Así que no puedo simplemente usar el formulario de envío para redirigir de nuevo a benchmark.php .
Sí, debe usar Ajax para que también agregue un campo en la tabla de la base de datos last_update, ahora cuando la página edit_game.php?game_id=87 la carga tiene la hora de la última_actualización, ajax verifica esta última actualización en algún intervalo de tiempo si ajax ve que hay alguna página de actualización debería refrescarse
En mi opinión, ejecutar un ciclo que verifica cada pocos segundos si los registros han cambiado no es la mejor solución. Hay una manera mucho más fácil de activar una actualización de página cuando envía un formulario en una ventana emergente.
Con window.opener puede realizar acciones en la ventana que abrió la ventana emergente en la que se encuentra actualmente. En su caso:
<form onsubmit="window.opener.location.reload();"> Your form here. <input type="submit" value="Save changes"> </form>O en jQuery:
$('form').submit(function() { window.opener.location.reload(); });https://jsfiddle.net/yqv1eh8w/1/
postMessagepuede comunicarse con la ventana secundaria. Enlace
window.addEventListener("message", function (event) {});te permitirá escucharlo desde una ventana infantil.
Esto debería ayudarte con lo que quieres. Todo se comunica con la ayuda de eventos y mensajes.
Además, deberá ejecutar esto localmente (porque abrí ventanas emergentes en la misma ventana)