SyntaxError no detectada: fichas inesperado :

Resuelto trobrock asked hace 14 años • 27 respuestas

Estoy ejecutando una llamada AJAX en mi script MooTools, esto funciona bien en Firefox pero en Chrome recibo un Uncaught SyntaxError: Unexpected token :error, no puedo determinar por qué. Comentar el código para determinar dónde está el código incorrecto no produce nada, creo que puede ser un problema con el JSON que se devuelve. Al revisar la consola veo que el JSON devuelto es este:

{"votes":47,"totalvotes":90}

No veo ningún problema, ¿por qué ocurriría este error?

vote.each(function(e){
  e.set('send', {
    onRequest : function(){
      spinner.show();
    },
    onComplete : function(){
      spinner.hide();
    },
    onSuccess : function(resp){
      var j = JSON.decode(resp);
      if (!j) return false;
      var restaurant = e.getParent('.restaurant');
      restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
      $$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
      buildRestaurantGraphs();
    }
  });

  e.addEvent('submit', function(e){
    e.stop();
    this.send();
  });
});
trobrock avatar Jun 30 '10 01:06 trobrock
Aceptado

Ver errores rojos

Error de sintaxis no detectado: token inesperado <

en la pestaña de la consola de desarrollador de Chrome hay una indicación de HTML en el cuerpo de la respuesta.

Lo que realmente estás viendo es la reacción de tu navegador ante la inesperada línea superior <!DOCTYPE html>del servidor.

andy magoon avatar Oct 28 '2014 17:10 andy magoon

Solo para su información, para las personas que podrían tener el mismo problema: solo tuve que hacer que mi servidor devolviera el JSON como aplicación/json y el controlador jQuery predeterminado funcionó bien.

Edward Abrams avatar Aug 28 '2010 20:08 Edward Abrams

Esto me acaba de pasar a mí y el motivo no fue ninguno de los anteriores. Estaba usando el comando jQuery getJSON y agregando callback=?para usar JSONP (ya que necesitaba ir a varios dominios), devolviendo el código JSON {"foo":"bar"}y obteniendo el error.

Esto se debe a que debería haber incluido los datos de devolución de llamada, algo así comojQuery17209314005577471107_1335958194322({"foo":"bar"})

Aquí está el código PHP que utilicé para lograr esto, que se degrada si se usa JSON (sin devolución de llamada):

$ret['foo'] = "bar";
finish();

function finish() {
    header("content-type:application/json");
    if ($_GET['callback']) {
        print $_GET['callback']."(";
    }
    print json_encode($GLOBALS['ret']);
    if ($_GET['callback']) {
        print ")";
    }
    exit; 
}

Con suerte, eso ayudará a alguien en el futuro.

Grim... avatar May 02 '2012 11:05 Grim...

Acabo de resolver el problema. Había algo que causaba problemas con una llamada de solicitud estándar, así que este es el código que utilicé en su lugar:

vote.each(function(element){                
  element.addEvent('submit', function(e){
    e.stop();
    new Request.JSON({
      url : e.target.action, 
      onRequest : function(){
        spinner.show();
      },
      onComplete : function(){
        spinner.hide();
      },
      onSuccess : function(resp){
        var j = resp;
        if (!j) return false;
        var restaurant = element.getParent('.restaurant');
        restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
        $$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
        buildRestaurantGraphs();
      }
    }).send(this);
  });
});

Si alguien sabe por qué el objeto Solicitud estándar me estaba dando problemas, me encantaría saberlo.

trobrock avatar Jun 30 '2010 20:06 trobrock