2016-02-12 57 views
0

我對AngualarJSNode.js很新,而且我的$http.get方法的成功回調模塊沒有執行。當請求失敗時,我的錯誤回調模塊工作,但是當它成功時,沒有任何反應。

這是我在我的server.js

var express = require('express'); 
var app = express(); 

// This is for testing GET connection with server 
app.get('/test', function (req, res) { 
    console.log("Got a GET request from my angular app"); 
    res.send('Hello ANGULAR'); 
}) 

var server = app.listen(8081, function() { 

    var host = server.address().address 
    var port = server.address().port 

    console.log("Example app listening at http://%s:%s", host, port) 

}) 

這是我在我的app.js

$http.get("http://localhost:8081/test") 
    .success (function (response) { 
    alert("GOT A RESPONSE"); 
    }) 
    .error (function() { 
    alert("SERVER GET TEST FAILED THO"); 
    }); 

有誰知道我做錯了嗎?

+0

您可以嘗試刪除服務器變量,並使用'app.listen(8081);' –

+0

取消註釋您的瀏覽器發送響應的行:'// res.send('Hello ANGULAR'); ' - >取消註釋 – eAbi

+0

取消註釋該行後,您的成功回調工作正常(即它被稱爲),也請完全刪除此問題。 :) – eAbi

回答

4

你的服務器的app.get塊丟失發送響應:

嘗試增加: res.sendStatus(200);res.status(XXX).send(*object/string*); 結尾。

這裏的文檔:http://expressjs.com/en/4x/api.html#res

+0

當我取消註釋'res.send'命令時,我的錯誤回調被調用。 – Rafi

0

angular和node.js代碼看起來很好。但是,網絡,配置等之間可能存在任何問題。

解決此問題的最佳方法是使用Chrome開發人員工具網絡面板。點擊頁面上的「Inspect」或Command-ALT-i(Mac)。

單擊「網絡」面板選項卡查看您的請求和收到的響應。

+0

例如你可能認爲這是一個成功的要求,事實並非如此。 –

+0

這個答案無非是一個註釋如何做基本的調試。對於那個使用註釋塊 – charlietfl

+0

也許基本的調試都是Rafi的需要。 –

-1

試試這個:

$http.get('http://localhost:8081/test').then(
    function successCallback(response) { 
     console.log("ok") 
    }, 
    function errorCallback(response) { 
     console.log("error") ; 
    } 
); 

根據官方文檔,不要用成功:

取消通知

的$ HTTP傳統承諾方法的成功和錯誤已被棄用。改爲使用標準然後方法。如果$ httpProvider.useLegacyPromiseExtensions設置爲false,那麼這些方法將拋出$ http/legacy錯誤。

+0

爲什麼downvote ??? $ http傳統承諾方法的成功和錯誤已被棄用。 – AlainIb

+0

你推翻了解決方案... :) OP只是忘了發送來自nodeJs端的響應。附:我沒有降低你的答案。 – eAbi

+0

'嘗試這個'並不能解釋爲什麼會有任何區別。棄用並不意味着被刪除 – charlietfl