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

353
Views
¿Cómo obtener JSON de una URL externa usando JavaScript (jQuery) Ajax?

Quiero obtener algo de contenido JSON de una URL usando JavaScript (jQuery) Ajax, pero siempre falla al cargar los datos.

Mi código es muy simple:

 <div id="content"> loading... </div>
 console.log("jQuery Version: " + jQuery.fn.jquery); $.ajax({ type: "GET", url: "https://www.teamspeak.com/versions/server.json", dataType: "json", success: function(data){ $("#content").html(data); console.log("SUCCESS: " + JSON.stringify(data)); }, error: function(data){ $("#content").html("Failed to load data. " + JSON.stringify(data)); console.log("ERROR: " + JSON.stringify(data)); }, complete: function(data){ console.log("COMPLETED: " + JSON.stringify(data)); }, });

La página siempre muestra este contenido:

 Failed to load data. {"readyState":0,"status":0,"statusText":"error"}

Cuando pruebo dataType: "jsonp" (con la P ) en lugar de dataType: "json" , muestra este contenido:

 Failed to load data. {"readyState":4,"status":200,"statusText":"load"}

Entonces... ¿Tuvo éxito, pero aún se está cargando? no lo entiendo Cuando abro la URL mencionada anteriormente en mi navegador, puedo ver los datos con formato application/json .

Verifique el resultado del código aquí: https://jsfiddle.net/j2t91osz/1/

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No puede completar la llamada porque está realizando una solicitud a una URL que se encuentra en una dirección de host ( www.teamspeak.com ) que es diferente de aquella en la que se implementa la página HTML ( jsfiddle.net ).

Eche un vistazo al mensaje que se muestra en la consola:

El acceso a XMLHttpRequest en 'https://www.teamspeak.com/versions/client.json' desde el origen 'https://fiddle.jshell.net' ha sido bloqueado por la política CORS: No 'Access-Control-Allow-Origin ' el encabezado está presente en el recurso solicitado.

Cuando esto sucede (hosts diferentes), su solicitud está sujeta a la política del mismo origen . En este escenario, el navegador solo permitirá que se complete la solicitud si la respuesta contiene algunos encabezados específicos (por ejemplo Access-Control-Allow-Origin ) que autorizan la llamada. Más detalles aquí.

¿Cómo hacer que funcione?

  • Si tiene acceso al servidor, puede configurarlo para que devuelva los encabezados necesarios. (Cada servidor/idioma tiene una forma de hacerlo; consulte algunas soluciones aquí ).
  • Si no controla el servidor, puede reflejarlo (a través de herramientas como proxies inversos o mediante una aplicación muy simple que simplemente reenvía la llamada) e incluir todos los encabezados necesarios allí.
  • Para fines de demostración, también puede usar un proxy CORS gratuito como https://allorigins.win/ . Ver demostración: https://jsfiddle.net/acdcjunior/rc14skf8/ (simplemente no lo use en producción, ya que podrán inspeccionar todo su tráfico, no puede contar con su disponibilidad y muchos otros problemas)
about 4 years ago · Juan Pablo Isaza 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!