2016-10-25 4 views
2

Die Frage sollte klar genug sein, und mein Code sollte das Problem anzeigen. Alle Fragen kommentieren einfach darunter.

app.js

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

app.use(express.static('public')); 



var characters = {"Griffins": 
    [{"Name":"Lois Griffin", 
    "Gender":"Female", 
    "Role": "Mother"}, 

    {"Name":"Chris Griffin", 
    "Gender":"Male", 
    "Role": "Son"}, 

    {"Name":"Meg Griffin", 
    "Gender":"Female", 
    "Role": "Daughter"}]  
}; 

app.get("/characters", function(req, res) { 
    res.send(characters); 
}) 

app.listen(9000, function(){ 
    console.log('Running'); 
}); 

Angularjs

app.controller('listCtrl',function($scope, $http){ 

    $scope.characterData = function() { 
     $http.get("/characters").then(function(data) { 
      console.log(data, 'success') 
     },function(data) { 
      console.log("data, failure.") 
     }) 
    } 
}) 

Fehler

Failed to load resource: the server responded with a status of 404 (
Object "failure." 

Objekt irrtümlicherweise

Object - 
config : Object 
data : "Cannot GET /characters↵" 
headers : function (d) 
status : 404 
statusText : "Not Found" 
__proto__ : Object 

Hinweis: Bei Verwendung von $ http.get ('characters.json') ... kann ich die Daten aus einer Datei namens 'character.json' abrufen.

+0

Versuchen Sie res.json (Zeichen); anstelle von res.send – Molda

+0

Immer noch den gleichen Fehler empfangen leider – Max

+0

Haben Sie versucht, auf/Zeichen direkt von Ihrem Browser zuzugreifen? Sie können auch cUrl ausprobieren. – Molda

Antwort

1

Die get-Methode in Winkel müssen die vollständige URL-String, ist wahrscheinlich so etwas wie folgt aus:

app.controller('listCtrl',function($scope, $http){ 
var serverHost = 'example.com'; 
var serverPort = '9000'; 

$scope.characterData = function() { 
    $http.get("http://'+serverHost+':'+serverPort+'/characters").then(function(data) { 
     console.log("success"); 
     console.log(data); 
    },function(data) { 
     console.log("failure"); 
     console.log(data); 
    }) 
    } 
}); 
+0

Dies ist keine Option, da ich einen Online-Arbeitsbereich (Codenvy) verwende, dies sollte jedoch kein Problem sein, basierend auf den Ergebnissen dieser Frage - http://stackoverflow.com/questions/34007032/angularjs-http- get-wont-Arbeit-mit-Knoten-js-restful – Max

+0

@Danilo Velasquez, das ist nicht wahr, es sollte nur mit '/ Zeichen arbeiten. Bitte beachten Sie [diese] (https://docs.angularjs.org/api/ng/service/$http) – Ionut

+0

Arent Sie versuchen, eine Verbindung zu einem API-Server herzustellen? –

1

404 ist ein Code, der der Server sendet, wenn der Server nicht in der Lage ist, eine Ressource zu finden. Es kann viele Gründe geben, die zu einem 404 führen, aber die häufigsten sind:

  • falschen Pfad angegeben.
  • Rechtschreibfehler im Pfad.
  • $ http.get (url, [config]): Es gibt 2 Argumente, die akzeptiert werden. URL ist ein absoluter/relativer Pfad. Dies ist ein Grund, warum $ http.get ('characters.json') anstelle von $ http.get ('/ characters') arbeitet.

    Also sollten Sie stattdessen den richtigen Pfad verwenden. Wenn sich 'characters.json' im Verzeichnis '\ characters' befindet, geben Sie den korrekten Pfad $ http.get ('\ characters \ charors.json') ein, damit der Server die Datei finden kann.

    Und auch, da Sie JSON-Daten senden, sollten Sie res.json statt res.send verwenden.

    +0

    Wenn Sie ein oder zwei Minuten Zeit haben, sehen Sie sich bitte dieses kurze Video an. Darauf basiere ich den Code. https://www.youtube.com/watch?v=xNfzLbRhamI – Max

    1

    characters.json Datei Stellen und app.get Methode ändert in app.js

    app.get('/characters', function (req, res) { 
        // First read existing users. 
        fs.readFile(__dirname + "/" + "characters.json", 'utf8', function (err, data) { 
         data = JSON.parse(data); 
    
         console.log(data); 
         res.end(JSON.stringify(data)); 
        }); 
    }) 
    
    //change your server configuration 
    
    var server = app.listen(8089, function() { 
        var host = server.address().address 
        var port = server.address().port 
        console.log("Example app listening at http://%s:%s", host, port) 
    
    }) 
    

    Sie JSON-Daten in Ihrer HTML-Seite bekommen

    0

    jetzt mein eigenes Problem scheint zu funktionieren. Ich weiß nicht, was passiert, ich denke, es gibt Stabilitätsprobleme bei der Verwendung eines Online-Arbeitsbereichs und einer virtuellen Maschine zum Ausführen von Servern, obwohl dies nicht der Fall sein sollte. Vielen Dank für die Beiträge aller, ich habe es trotzdem geschafft, einige gute Informationen zu sammeln.