1. ホーム
  2. javascript

[解決済み] AJAXレスポンスエラー:net::ERR_EMPTY_RESPONSE

2022-03-12 17:14:43

質問

CODE:

フロントエンド

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


シチュエーション

削除ボタンを追加して、ユーザーが自分の投稿を削除できるようにしました。

ユーザーがボタンをクリックすると、私のNode.jsサーバーにAJAXリクエストが行われます。

しかし、次のようなエラーが発生します。


ERROR:

net::ERR_EMPTY_RESPONSE


QUESTION:

このエラーは何ですか、どうすれば直りますか?

解決方法は?

あなたが得ている応答は、実際には 正しい . につきまして ドキュメント の場合、Firebaseは200のステータスコードを返し 空のレスポンス . net::ERR_EMPTY_RESPONSE がまさにそれです。あなたがすべきことは、両方の null200 ステータスコードが true ならば、その投稿は削除されたと考えてよいでしょう。

個人的な意見としては、Firebaseは 何もない と一般的でキャッチオールなステータスコードです。私は、204 No Contentや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.")
}