Estoy tratando de reemplazar el contenido de un div después de hacer clic en un enlace usando Rails 3, remote_link :remote => true
y jQuery.Error del analizador cuando se usa jQuery-UJS para el enlace remoto a la aplicación Rails 3: ¿cómo puedo depurar esto?
Hasta ahora, he podido hacer que el controlador muestre el parcial correcto mientras responde con un código HTTP 200. He puesto algunas devoluciones de llamada para encontrar el origen del problema:
jQuery(function($) {
$("#follow-link").bind("ajax:before", function() {
console.log("ajax:before");
});
$("#follow-link").bind("ajax:success", function(data, status, xhr) {
console.log("ajax:success");
});
$("#follow-link").bind("ajax:complete", function() {
console.log("ajax:complete");
});
$("#follow-link").bind("ajax:error", function(xhr, status, error) {
console.log("ajax:error");
console.log(error);
});
});
Mientras before
y complete
se disparan, no es success
error
y salidas "parsererror". El contenido que obtengo cuando inspecciono la respuesta en las herramientas de desarrollo de Safari es una cadena simple.
¿Por qué generaría un parsererror? ¿Cómo puedo obtener más información sobre qué está causando este error?
Como se trata de un error de análisis, ¿podría estar esperando JSON o XML y conseguir HTML, o algo por el estilo? Si buscas en Recursos en Safari, puedes examinar la respuesta. No has mostrado la llamada Ajax, por lo que es difícil saber qué está pasando. Se supone que jQuery "adivina" el tipo de respuesta en función del tipo MIME; es difícil saber dónde podría salir mal, pero vale la pena mirar la respuesta para asegurarse de que está enviando las mismas cosas que su servidor declara en el tipo MIME. –
En el encabezado del recurso, la solicitud está configurada para aceptar 'text/javascript' y la respuesta también es' text/javascript'. La llamada es 'Unfollow' generada por Rails helper 'link_to" Follow ", follow_path (usuario),: remote => true,: id =>" follow-link "'. –
Entonces estás usando 'rails.js'. No estoy seguro de lo que está obteniendo en la "cadena simple" o qué tipo de MIME es. Muy claramente, jQuery está intentando analizar esto o lo está entregando al motor js de Safari para analizarlo como script. De cualquier manera, ese no es el efecto deseado, ¿verdad? Mire en la pestaña de Recursos y en el parcial debe aparecer cerca de la parte inferior. Luego, cuando veas la cadena que fue devuelta, ¿qué es eso? Además, haga clic en la pestaña de encabezados de la ventana de visualización y observe el encabezado Solicitar aceptación y el encabezado Tipo de contenido de respuesta. Estos deberían darle una idea de lo que pasa. –