"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver el error \"Colón de token inesperado\" en solicitudes JSONP usando jQuery.ajax#get?

¿Cómo resolver el error \"Colón de token inesperado\" en solicitudes JSONP usando jQuery.ajax#get?

Publicado el 2024-11-02
Navegar:498

How to Resolve \

Puntos de token inesperados: resolución de errores JSONP en jQuery.ajax#get

Cuando se encuentra un error de "Dos puntos de token inesperados" en jQuery.ajax #get, es importante comprender la naturaleza de las solicitudes JSONP (JSON con relleno). JSONP implica enviar datos JSON a una llamada de función global de JavaScript en el lado del cliente.

Para admitir JSONP, el servidor debe incluir el "Relleno" en la respuesta. El "Relleno" consta de un nombre de función de devolución de llamada seguido de los datos JSON entre paréntesis:

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

En este ejemplo, el nombre de la función de devolución de llamada es jQuery111108398571682628244_1403193212453. El error se produce porque JavaScript analiza JSONP como JavaScript, donde {...} también representa bloques.

Para rectificar este error, el servidor debe incluir el "Relleno" en la respuesta. Además, jQuery normalmente incluirá un parámetro de cadena de consulta de devolución de llamada con el nombre de la función. Para adaptarse a esto, el código del servidor puede usar una declaración condicional para verificar el parámetro de devolución de llamada y enviar la respuesta en consecuencia:

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 proporciona un método res.jsonp() que ya maneja esta condición, lo que facilita la devolución de respuestas JSONP:

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

    res.jsonp({
        Name : "Tom",
        Description : "Hello it's me!"
    });
});
Declaración de liberación Este artículo se reproduce en: 1729349598 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3