Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda