2

Bem tenho o seguinte código em javascript dentro de uma função chamada query() que recebe o valor index de um input:

var request = new XMLHttpRequest();

if (!request) {
    alert('Que pena :( a requisição não pode ser feita');
}else{

    request.onreadystatechange = resposta;
    request.open('GET', 'query.php?busca='+index);
    request.send();
}


function resposta() {
    if (request.readyState === XMLHttpRequest.DONE) {
        if (request.status === 200) {
            console.log(request.response);

            document.getElementById('nome').innerHTML = request.response;
            document.getElementById('tamanho').innerHTML = request.response;

            resp = request.response;
            console.log(resp);
            return resp;

        } else {
            return 'Problema na requisição';
        }
    }
}

A função recebe um JSON como esse de um código PHP:

{"nome":"peixe","tamanho":"30"}

Mas quando altero a variável resp para resp.nome ou resp.tamanho o valor da variável se torna undefined.

2
  • Essa função é chamada assincronamente logo o return não tem sentido. Mas aproveite e coloque também o código onde está a tentar mudar o valor de resp.nome
    – Isac
    Commented 17/03/2018 às 2:03
  • Não estou tentando mudar o valor, somente exibi-lo. Quando uso console.log(resp) o valor retornado é um JSON mas quando uso console.log(resp.nome) o valor retornado é undefined. E obrigado pelo aviso sobre os returns.
    – Pleshw
    Commented 17/03/2018 às 9:15

1 Resposta 1

0

Você precisa converter o retorno do Ajax em objeto JSON. No momento ele apenas é uma string. Use o método JSON.parse(). Troque:

resp = request.response;

Por:

resp = JSON.parse(request.response);

Retire também o return resp; desnecessário.

Documentação do método.

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .