"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como resolver o erro “Dois pontos de token inesperado” em solicitações JSONP usando jQuery.ajax#get?

Como resolver o erro “Dois pontos de token inesperado” em solicitações JSONP usando jQuery.ajax#get?

Publicado em 2024-11-02
Navegar:268

How to Resolve \

Dois pontos de token inesperados: resolvendo erros JSONP em jQuery.ajax#get

Ao encontrar um erro "dois pontos de token inesperado" em jQuery.ajax #get, é importante entender a natureza das solicitações JSONP (JSON com preenchimento). JSONP envolve o envio de dados JSON de volta para uma chamada de função JavaScript global no lado do cliente.

Para oferecer suporte a JSONP, o servidor deve incluir o "preenchimento" na resposta. O "Padding" consiste em um nome de função de retorno de chamada seguido pelos dados JSON entre parênteses:

jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})

Neste exemplo, o nome da função de retorno de chamada é jQuery111108398571682628244_1403193212453. O erro ocorre porque o JavaScript analisa JSONP como JavaScript, onde {...} também representa blocos.

Para corrigir esse erro, o servidor precisa incluir o "Padding" na resposta. Além disso, o jQuery normalmente incluirá um parâmetro de string de consulta de retorno de chamada com o nome da função. Para acomodar isso, o código do servidor pode usar uma instrução condicional para verificar o parâmetro de retorno de chamada e enviar a resposta de acordo:

var callback = req.query.callback;
var data = JSON.stringify({
    Name : "Tom",
    Description : "Hello it's me!"
});

if (callback) {
    res.setHeader('Content-Type', 'text/javascript');
    res.end(callback   '('   data   ')');
} else {
    res.setHeader('Content-Type', 'application/json');
    res.end(data);
}

Como alternativa, ExpressJS fornece um método res.jsonp() que já trata dessa condição, facilitando o retorno de respostas JSONP:

app.get( '/', function( req, res ) {
    console.log( 'req received' );

    res.jsonp({
        Name : "Tom",
        Description : "Hello it's me!"
    });
});
Declaração de lançamento Este artigo foi reimpresso em: 1729349598 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3