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

522
Visualizações
VM133715:1 Uncaught SyntaxError: Unexpected end of JSON input

I am getting

Uncaught SyntaxError: Unexpected end of JSON input

error in the console when I try to parse JSON data above the if statement within the eventListner scope, but it also outputs the expected data.

const getData = (link, callback) => {

    const request = new XMLHttpRequest();

    request.open('GET', link);
    request.send();

    const err = `couldn't fetch data Error COde:${request.status}`;
    request.addEventListener('readystatechange', () => {
        const data = JSON.parse(request.responseText);
        if (request.readyState === 4 && request.status === 200) {
            
            callback(data, undefined)
        }

        else if (request.readyState === 4)
            callback(undefined, err);

    });

}


const link = '/tom.json'
getData(link, (err, data) => {
    if (err) console.log(err);
    else
        console.log(data);

});

output:

VM133780:1 Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse ()
at XMLHttpRequest. (async.js:13:27)
(anonymous) @ async.js:13
XMLHttpRequest.send (async)
getData @ async.js:9
(anonymous) @ async.js:28
async.js:29 (3) [{…}, {…}, {…}]

if I place the JSON.parse(); within the if statement, it doesn't show any error and outputs the data as expected `

const getData = (link, callback) => {

    const request = new XMLHttpRequest();

    request.open('GET', link);
    request.send();

    
    request.addEventListener('readystatechange', () => {
       const err = `couldn't fetch data ErrorCOde:${request.status}`; 
        if (request.readyState === 4 && request.status === 200) {
            const data = JSON.parse(request.responseText);
            callback(data, undefined)
        }

        else if (request.readyState === 4)
            callback(undefined, err);

    });

}


const link = '/tom.json'
getData(link, (err, data) => {
    if (err) console.log(err);
    else
        console.log(data);

});

output

async.js:30
(3) [{…}, {…}, {…}]

what's the difference?

about 4 years ago · Juan Pablo Isaza
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