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

121
Visualizações
No se pueden asignar datos de json de dominio cruzado a una variable en Ajax

Soy un novato en Ajax, estoy tratando de obtener datos usando la funcionalidad de dominio Ajax Cross. La función Ajax se llama desde test.php que llama a stats.php para solicitar datos

Estadísticas.php

 <?php $data = array(); $data[0]=1; $data[1]=1; echo json_encode($data); ?>

Prueba.php

 <html> <head> <script src="./lib/jquery.min.js"></script> <script> var var0=0; $(document).ready(setInterval(function() { $.ajax({ cache: false, type: "GET", url: "http://10.0.0.2/dashBoard/stats.php", data: "", dataType: "jsonp", crossDomain: true, jsonpCallback: 'callback', contentType: "application/json; charset=utf-8", success: function(data){ console.log(window.var0 = data[0]); } }); }, 1000)); $(document).ready(setInterval(function() { document.getElementById("p1").innerHTML = window.var0; },1000)); </script> </head> <body> <p id="p1"></p> </body> </html>

test.php está en 10.0.0.1 stats.php está en 10.0.0.2

Ajax puede llamar a stats.php y puedo ver la respuesta json pero no puedo usar estos datos de respuesta en test.php. No puedo asignar el valor data[0] , que es 1 según stats.php a window.var0 en test.php, que es una variable global. Sin embargo, esto funciona perfectamente bien cuando stats.php está en 10.0.0.1 junto con test.php, pero mi requisito es cargar datos de stats.php en 10.0.0.2.

Por favor ayuda.

Gracias por adelantado.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Su problema es que desacopla la función que trae los datos del servidor y la función que toma esos datos y cambia el DOM en función de la respuesta del servidor. Además, está ejecutando ambas funciones al mismo tiempo. Esto significa que la función que cambia el DOM se activará antes de que regrese la respuesta del servidor.

El objetivo principal de usar un $ajax es saber cuándo ha regresado la respuesta, por lo que podría usar esos datos. Al colocar $.ajax en una función y lo que hace con la respuesta en otra, rompe este comportamiento de "esperar a que lleguen los datos". El propósito completo de la función de success es que se ejecuta cuando la respuesta ha regresado con éxito. En success ya tienes los datos. Así que úsalo para cambiar DOM directamente:

Usa esto en su lugar:

 $(document).ready(setInterval(function() { $.ajax({ cache: false, type: "GET", url: "http://10.0.0.2/dashBoard/stats.php", data: "", dataType: "jsonp", crossDomain: true, jsonpCallback: 'callback', contentType: "application/json; charset=utf-8", success: function(data){ document.getElementById("p1").innerHTML = data[0]; } }); }, 1000));

No puedo estar seguro, ya que no conozco el contexto, pero lo más probable es que ahora pueda eliminar de forma segura el contenedor de tiempo de espera. No tiene sentido retrasar la llamada de datos, ¿verdad?

 var var0; function updateP1(){ document.getElementById("p1").innerHTML = var0; } $(document).ready(function() { $.ajax({ cache: false, type: "GET", url: "http://10.0.0.2/dashBoard/stats.php", data: "", dataType: "jsonp", crossDomain: true, jsonpCallback: 'callback', contentType: "application/json; charset=utf-8", success: function (data) { var0 = data[0]; updateP1(); } }); });
about 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