4

Ejecuto el código con chrome y funciona bien, pero cuando lo ejecuto en IE. Me da el error ->

introducir la descripción de la imagen aquí

He estado leyendo y "supuestamente" es que tengo el JSON mal formado, pero si fuera así, no funcionaría en chrome y yo el JSON lo veo bien...

{
    "areaCarga": "custom--app",
    "visualizacion": "M-T-2",
    "texto": "Otros productos relacionados",
    "multimedias": [{
        "titulo": "1-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    },
    {
        "titulo": "2-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    },
    {
        "titulo": "3-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    },
    {
        "titulo": "4-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    },
    {
        "titulo": "5-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    },
    {
        "titulo": "6-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    },
    {
        "titulo": "7-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    },
    {
        "titulo": "8-tecnologia Digital",
        "entrada": " 100% digital, ideal para operar en cualquier momento del día",
        "enlace": "",
        "imagen": "./images/hablamos-01.jpg"
    }]
}

Estoy usando IE->11 y no estoy usando frameworks ni nada para Javascript, es un .js echo por mí, nativo, sin jquery ni nada.

Repito: Chrome funciona bien el carousel, IE da el error de la imagen.

//Función principal: carga el elemento entrada.json
function cargarMultiContentVistaCarousel(){

    //realizamos proceso de validacion del JSON
    var request = new XMLHttpRequest();
        request.open("GET", "./entrada_multi_content_vista_carousel_10.json", true);
        request.send(null);
        request.onreadystatechange = function() {
            if ( request.readyState === 4 && request.status === 200 ) {
                var MyJSON = JSON.parse(request.responseText);
                procesarMultiContentVistaCarousel(MyJSON);
            }
        }
}


function procesarMultiContentVistaCarousel(JSON){
EduBw
  • 2,126
  • 1
  • 12
  • 48
  • 1
    Posible duplicado de [¿Se pueden introducir caracteres especiales de un JSON?](https://es.stackoverflow.com/questions/169333/se-pueden-introducir-caracteres-especiales-de-un-json) – JackNavaRow Nov 28 '18 at 10:53
  • No creo que sea un duplicado, los acentos, eñes y otros carácteres son válidos en JSON, Esa otra pregunta trata de caracteres que es necesario escapar como comillas, barra invertida, retornos de carro, etc. –  Nov 29 '18 at 08:12

1 Answers1

2

Lo resolví, no le gustan las tildes al IE cuando se hace el JSON.parse. para ello habrá que cambiarlo https://es.functions-online.com/json_encode.html

Habría que mirar si afectan otros carácteres... ñ o ? ¡ etc...

EduBw
  • 2,126
  • 1
  • 12
  • 48
  • ¿Dónde produces el JSON, es en el servidor, usando PHP? Con un encabezado adecuado el problema se resolvería. No es que a IE no le gusten las tildes, a ninguno le gustan si no saben interpretarlas, por eso tienes que configurar el entorno con una codificación adecuada. – A. Cedano Nov 28 '18 at 11:06
  • me lo da el servidor en un futuro, yo ahora, de momento, para el tema de maquetar, me he creado uno, yo no tengo acceso al servidor, me lo dará alguien los datos. – EduBw Nov 28 '18 at 11:16
  • Entonces si vas a consumir un JSON con caracteres especiales lo que tienes es que pedir a quien provee esos datos que lo haga de la forma correcta, poniendo los encabezados y la codificación adecuada. Si eso queda bien configurado cualquier navegador podrá leerlos correctamente, sin importar que sea IE, Chrome, Safari, Mozilla, Opera. Imagínate que sea un programa que cualquiera pueda usar en el navegador que él quiera y que sólo funcione en algunos navegadores, sería desastroso. – A. Cedano Nov 28 '18 at 11:19
  • Entonces, desde el entorno cliente, ¿ no se puede controlar eso ? – EduBw Nov 28 '18 at 11:21
  • 1
    No se puede controlar eso, no al menos al 100% y recurriendo quizá a procesos oscuros y dependientes de cada cliente. Cuando consumes datos que son generados en el servidor, es este el que debe encargarse de darte los datos como el cliente debe consumirlos. Pongamos un ejemplo de la vida real: ¿qué pasaría con una tienda de ropa donde venden camisas a los clientes sin los botones, para que éste se encargue de comprarlos y de ponérselos? ¿Tendría éxito esa tienda? Quizá, dirá alguno, si vende las camisas mucho más baratas que las otras. Si rebaja mucho más del precio de los botones, quebraría. – A. Cedano Nov 28 '18 at 11:57