2017-01-11 164 views
0

CODE:AJAX响应错误:净:: ERR_EMPTY_RESPONSE

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); 
        } 
       }); 
      } 
     }); 
    }); 

后端:

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); 
        } 
      }); 
     }  
    }); 
}); 

状况:

我添加了删除按钮,以便用户可以删除他的帖子。

当用户点击按钮时,向我的Node.js服务器发出AJAX请求。

,但我得到了以下错误:


错误:

net::ERR_EMPTY_RESPONSE 

问题:

这是什么错误,以及如何解决呢?

+1

该错误与您提供的代码无关。 –

+0

@KevinB我更新了我的问题。 – Coder1000

+0

您确定当您无法致电res.send时,其他地方的其他人正在发送回复吗?目前如果有错误或回调没有被调用您的请求将不会结束... –

回答

2

你得到的答复居然是正确。根据docs,Firebase返回200状态代码并返回空的响应net::ERR_EMPTY_RESPONSE就是这样。你应该做的是检查响应中的null200状态码;如果属实,则可以安全地假设该帖子已被删除。

我个人认为,Firebase应该真的考虑返回一些比更多的东西,而不是以及一个通用的全部状态码。我更喜欢204无内容或410 Gone。可惜。

-

边注:此条件不会返回任何东西,如果后期不属于作者 - 你的API仍然应该返回东西(错误,可能是在这种情况下),即使你的条件不匹配。像:

if (firebase.auth().currentUser.uid.toString() == author) { 
    // your code 
} else { 
    res.status(401).send("User does not have permission to complete the operation.") 
} 
+0

就是这样。让我试着解决这个问题并回复你。 – Coder1000

+0

好吧,我调试它。问题是该部分在req.params.section中传递为空 – Coder1000

+0

显然,我在我的JQuery中传递了错误。你看到如何解决它? – Coder1000

-3

你得到通过Ajax空的响应,你可能要检查你的node.js服务器,以确保它是做你想要什么