Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

174
Views
el evento está esperando una llamada ajax a pesar de que async se establece 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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!