2017-01-11 21 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); 
        } 
       }); 
      } 
     }); 
    }); 

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

SITUATION:

削除ボタンを追加したので、ユーザーは自分の投稿を削除することができました。

ユーザーがボタンをクリックすると、Node.jsサーバーに対してAJAX要求が行われます。

しかし、私は次のエラーを取得する:


はERROR:

net::ERR_EMPTY_RESPONSE 

QUESTION:

何このエラーであり、私はそれをどのように修正すればよいです?あなたは、AJAXを通じて空の応答を得ている

+1

エラーは、提供したコードとは無関係です。 –

+0

@KevinB私の質問が更新されました。 – Coder1000

+0

res.sendに電話をかけていないときに、他の誰かが応答を送信していると確信していますか?現在のところ、エラーがある場合、またはコールバックがあなたのリクエストと呼ばれることはありません。 –

答えて

2

応答が実際に正しいで欲しいものをやっていることを確認するために、Node.jsのサーバーをチェックしたい場合があります。 docsの場合、Firebaseは200ステータスコードを返し、は空の応答を返します。 net::ERR_EMPTY_RESPONSEはまさにそれです。レスポンスにnull200ステータスコードの両方をチェックすることです。 trueの場合は、投稿が削除されたとみなすことができます。

個人的には、Firebaseは以外のものを何も返さないと考えています。と汎用のcatch-allステータスコードです。 204 No Content、410 Goneのようなものが好きです。しかし悲しいかな。

-

サイドノート:ポストは作者に属していない場合、この条件は何かを返すことはありません - あなたのAPIはまだ(おそらく、この場合にはエラー、)何かを返す必要がありますも、あなたの条件付きの場合一致しません。 Like:

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

[OK]を、私はそれをデバッグします。問題はreq.params.section – Coder1000

+0

で渡されたときにセクションがnullであることです。明らかに、私はJQuery内でそれを間違って渡しました。あなたはそれを修正する方法を見ますか? – Coder1000

-3

、あなたはあなたが取得している