Respuesta de AJAX error: net::ERR_EMPTY_RESPONSE

CÓDIGO:

FRONT-END

$(document).ready(function(){
        $('.delete-post').on('click', function(){
            var id = $(this).data('id');
            var section = $(this).data('section');
            var url = '/users/delete/'+id;
            if(confirm("Delete Post ?")){
                $.ajax({
                    url: url,
                    type:'DELETE',
                    success: function(result){
                        console.log('Deleting post...');
                        window.location.href='/users/profile';
                    },
                    error: function(err){
                        console.log(err);
                    }
                });
            }
        });
    });

BACK-END:

router.delete('/delete/:id', function(req, res, next) {

    var id = req.params.id;
    var section = req.params.section;

    var image = "";
    var author = "";

    var postRef = firebase.database().ref("posts/"+section+"/"+id);
    var userRef = firebase.database().ref("users/posts/"+id);
    var likesRef = firebase.database().ref("users/likes/"+id);
    var hotRef = firebase.database().ref("hot/"+section+"/"+id);

    postRef.once('value', function(snapshot){
        image = snapshot.image;
        author = snapshot.author;

        if (firebase.auth().currentUser.uid.toString() == author) {
            var file = bucket.file(image);

            file.delete(function (err, apiResponse) {
                  if (err) {
                    console.log(err);
                  }
                  else {
                    console.log("Deleted successfully");

                    postRef.remove();
                    userRef.remove();
                    hotRef.remove();
                    likesRef.remove();

                    req.flash('success_msg','Post Deleted');
                    res.send(200);
                  }
            });
        }    
    });
});

SITUACIÓN:

He añadido eliminar botones de modo que el usuario puede borrar sus posts.

Cuando el usuario hace clic en el botón de una petición AJAX se hizo para mi Node.js servidor.

Pero me sale el siguiente error:


De ERROR:

net::ERR_EMPTY_RESPONSE

PREGUNTA:

Lo que es este error y cómo puedo solucionarlo ?

  • El error no está relacionado con el código que usted ha proporcionado.
  • He actualizado mi pregunta.
  • Está usted seguro de que cuando no llamar res.enviar algo más en algún otro lugar es el envío de una respuesta? en la actualidad, si hay un error o una devolución de llamada no se llama su solicitud no va a terminar…
  • Estás diciendo que tengo que agregar una res.enviar(200) dentro de mi si la instrucción para el caso de error ?
  • tal vez no de 200, pero sí que no sería una mala idea para responder siempre de una manera o de otra.
InformationsquelleAutor Coder1000 | 2017-01-11

1 Kommentar

  1. 3

    La respuesta que usted está consiguiendo realmente es correcta. Por el docs, Firebase devuelve un código de estado 200 y una respuesta vacía. net::ERR_EMPTY_RESPONSE es exactamente eso. Lo que usted debe hacer es comprobar tanto null y un 200 código de estado de la respuesta; si es true, se puede asumir con seguridad que el post fue eliminado.

    Mi opinión personal es que Firebase realmente debería considerar la posibilidad de devolver algo más sustancial que nada y genérico, catch-all de código de estado. Yo preferiría algo como 204 Sin Contenido, o 410 Ido. Pero, por desgracia.

    Lado nota: este condicional nunca devuelve nada si el post no pertenece al autor — su API debe devolver algo (un error, probablemente en este caso), incluso si el condicional no coincide. Como:

    if (firebase.auth().currentUser.uid.toString() == author) { 
        //your code
    } else {
        res.status(401).send("User does not have permission to complete the operation.")
    }
    • Que era él. Permítanme tratar de arreglar esto y volver a usted.
    • Ok, yo depurar ella. El problema es que la sección es nulo cuando se promulgó en req.params.sección
    • Al parecer, me la pasó mal en el interior de mi JQuery. ¿Ves cómo solucionarlo ?
    • Uh, bueno, si eres de depuración y la sección es nulo, averiguar por qué? Usted no está enviando un valor o el formulario tiene un bug?
    • Bien, pensé que te gustaría saber, mediante la comprobación de mis Jquery y por lo tanto podría hacer una respuesta completa que analiza el problema Y lo soluciona 🙂 Nervemind. Voy a hacer mañana. A menos que alguien se proporciona la solución en el momento, voy a aceptar su respuesta. Que tengas un buen dia ^^
    • Realmente no podemos saber con certeza sin ver la totalidad del flujo desde el navegador al servidor de respuesta. Debe ser fácil de depurar en su final, aunque.
    • Después de leer y re-leer tu pregunta, parece que el problema no está relacionado con la base avanzada respuesta – si usted está recibiendo el error en la implementación de jQuery, es el post eliminados de la base avanzada como se esperaba? res.send(200) devuelve una respuesta 200, y «OK», y por lo tanto no causa net::ERR_EMPTY_RESPONSE.
    • Yo le dije que «en la sección» era nula. Me estaba preguntando cómo pasar junto a la sección de identificación dentro de mi jQuery 🙂 porque yo era claramente haciendo mal. La pregunta es, básicamente, ¿cómo puedo pasar de 2 variables al mismo tiempo en mi JQuery ya que no estoy haciendo lo correcto. Por cierto, no sé quién votada abajo, pero ese es el tipo de media. Permítanme upvote a compensar eso.
    • Ok, me pasa a la sección. La cuestión es, en realidad, en mi base avanzada de la función.
    • Ok, me fijo que. Una última cosa: tengo una net::ERR_CONNECTION_REFUSED una vez que mi primer Firebase remove() se ejecuta… y luego la otra quita, no se ejecutan.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea