问题应该足够清楚,我的代码应该显示问题。任何问题都只是在下面发表评论。
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');
});
angular.js
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.")
})
}
})
错误
Failed to load resource: the server responded with a status of 404 (
Object "failure."
错误的对象
Object -
config : Object
data : "Cannot GET /characters↵"
headers : function (d)
status : 404
statusText : "Not Found"
__proto__ : Object
注意:使用$ http.get('characters.json')时......我可以从名为'character.json'的文件中获取数据。
答案 0 :(得分:1)
angular中的get方法需要完整的url字符串,可能是这样的:
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);
})
}
});
答案 1 :(得分:1)
404是服务器无法找到资源时服务器发送的代码。导致404响应的原因可能有很多,但最常见的原因是:
$ http.get(url,[config]):有2个参数被接受。 url是绝对/相对路径。这就是为什么$ http.get('characters.json')正在工作而不是$ http.get('/ characters')的原因。
所以,你应该使用正确的路径。如果'characters.json'在'\ characters'目录中,你应该给出正确的路径$ http.get('\ characters \ characters.json'),以便服务器可以找到该文件。
而且,既然你要发送json数据,你应该使用res.json而不是res.send。
答案 2 :(得分:1)
制作characters.json
文件并更改app.js中的app.get方法
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)
})
您可以在html页面中获取Json数据
答案 3 :(得分:0)
我现在的问题似乎正在发挥作用。我不知道发生了什么,我认为使用在线工作空间和虚拟机来运行服务器存在稳定性问题,即使不应该存在。感谢大家的意见,我仍然设法获得了一些好的信息。