2017-01-11 182 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服務器,以確保它是做你想要什麼