Afortunadamente ese título no es demasiado críptico. Lo que sucede es que tengo un script jQuery AJAX que estoy tratando de usar para acceder a una API en un servidor remoto, que devuelve una respuesta JSON. Sin embargo, la API devuelve el JSON como tipo MIME "text/html" (en el encabezado de respuesta) en lugar de "application/json". Parece obvio que simplemente necesito cambiar el tipo de contenido devuelto de texto a JSON, para hacer que la llamada AJAX interprete los datos correctamente.jQuery AJAX JSON dataType Conversión
Lamentablemente, este no es el caso. Lo he intentado de muchas maneras diferentes, todas las cuales fallan. Lo más cerca que he estado de hacer que funcione esta llamada API es cuando el depurador me dice "Recurso interpretado como Script, pero transferido con texto tipo MIME/html". Y la AJAX llama a errores con mi mensaje de depuración que vuelca el objeto jqXHR en formato JSON, que me dice: {"readyState":4,"status":200,"statusText":"parsererror"}
Aquí hay un ejemplo de mi código (aunque he cambiado el código de varias maneras, en mis intentos de conseguir que funcione, pero esta versión parece ser el más cercano a corregir):
$.ajax({
type: 'GET',
url: 'http://username:[email protected]/api/v1/projects.json',
contentType: 'application/json',
dataType: 'jsonp',
converters: {
'jsonp': jQuery.parseJSON,
},
success: function(data) {
alert(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log(textStatus+': '+errorThrown);
}
});
Si alguien puede averiguar lo que tengo que hacer de manera diferente para hacer este trabajo, voy a estar muy agradecido.
También puede valer la pena señalar que si usted copiar/pegar el URL de la API en una barra de direcciones del navegador y pulse ir, da la respuesta JSON apropiado con la cabecera de la respuesta correcta ("application/json")
¿Ha intentado simplemente establecer 'dataType:" html "', y luego analizarlo con éxito? –
Absolutamente. Si hago eso, obtengo un error de origen. Esta es una solicitud entre dominios, no lo olvides, por lo que 'dataType' tiene que ser' jsonp' o 'json' con' callback =? 'En la URL que hace que jQuery lo convierta automáticamente en' jsonp' . También intenté agregar 'callback =?' While dataType = 'html', pero todavía no tuve suerte. – therealklanni
¿Puedes publicar la respuesta que está enviando tu servidor? –