AJAX响应错误:net :: ERR_EMPTY_RESPONSE
码:
前端
$(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); } }); } }); });
情况:
我添加了删除按钮,以便用户可以删除他的post。
当用户单击该按钮时,会向我的Node.js服务器发出AJAX请求。
但是我收到以下错误:
错误:
net::ERR_EMPTY_RESPONSE
题:
这是什么错误,我该如何解决?
你得到的回答实际上是正确的 。 根据文档 ,Firebase会返回200状态代码和空响应 。 net::ERR_EMPTY_RESPONSE
就是这样。 你应该做的是检查响应中的null
和200
状态代码; 如果为true,您可以放心地假设该post已被删除。
我个人认为,Firebase应该考虑返回比没有更重要的东西和一个通用的,全能状态代码。 我更喜欢204 No Content或410 Gone之类的东西。 可惜。
–
旁注:如果post不属于作者,则此条件将永远不会返回任何内容 – 即使您的条件不匹配,您的API仍应返回某些内容 (错误,可能在这种情况下)。 喜欢:
if (firebase.auth().currentUser.uid.toString() == author) { // your code } else { res.status(401).send("User does not have permission to complete the operation.") }