Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
el evento está esperando una llamada ajax aunque async se establezca en verdadero

Estoy tratando de permitir que el usuario abra una pestaña para seguir permitiéndole usar el sistema mientras la pestaña actual realiza alguna solicitud al servidor.

así que abro una nueva pestaña y trato de usar $(window).load() o $(window.document).ready() para hacer clic en algún elemento cuando los elementos estén listos. Al probarlo con una solicitud de servidor grande, la ventana solo se carga cuando la solicitud ajax regresa con el resultado y finaliza la función exitosa aunque debería ser asíncrona. Me encantaría algunas ideas de por qué está sucediendo. g_SearchHandler.SearchPleaseWait(true); está llamando cubriendo la pantalla con un gif en espera y llamando a displayNewTab() que abre una nueva pestaña.

código para abrir una nueva pestaña:

 displayInNewTab: function(){ try { var w = window.open(href = "/prod/php/home.php"); var loadingFunc = function(){ var devices = w.document.querySelector(`.sidebar-segment[data-segment-name="DEVICES"]`); var selDevice = getSelectedDeviceTreeData(); if(!selDevice){ return; } var selDeviceObj = w.document.getElementById(selDevice.name); //when the window is loaded keep trying until elements are available for clicking. if(devices && selDeviceObj){ devices.click() w.ClickOnItem(selDevice.name, false, true) }else{ setTimeout(loadingFunc,1000); } } $(w.document).ready(loadingFunc); }catch (e){ console.error(e) } }

g_SearchHandler.SearchPleaseWait(verdadero); solicitud de ajax:

 $.ajax({ type : "POST", dataType : "json", url : "commands.php", data : params, success : function(objJSON) { DisplayResults(objJSON); g_SearchHandler.SearchPleaseWait(false); } });
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Aparentemente sucedió porque la página tardó un tiempo en solicitar los recursos al servidor, por lo que el servidor atendió primero la solicitud ajax, y la solicitud de los recursos de la página estaba en una cola y se atendió después de que se realizó la solicitud ajax.

un parche rápido fue insertar la solicitud ajax en setTimeout() para que la nueva página primero haga una solicitud de los recursos y solo luego se envíe la solicitud ajax.

p.ej:

 setTimeout(function(){ $.ajax({ type : "POST", dataType : "json", url : "commands.php", data : params, success : function(objJSON) { DisplayResults(objJSON); g_SearchHandler.SearchPleaseWait(false); } }) },5000);

EDITAR

He buscado algunas soluciones mejores cuando me di cuenta de cuál es el problema.

dos soluciones era:

1. obtener los recursos de la página antes de abrir la pestaña y solo luego realizar la solicitud ajax

 $.get("/prod/php/home.php") .done(function(){ // open new tab with fetched resources. //make ajax call here. })
  1. ya que la sesión de php estaba bloqueada y eso es lo que causó el problema. en el lado del servidor php session_write_close(); Hizo el truco.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda