How to get data with my angular.js file from node.

2019-07-12 15:37发布

问题:

I created main.js for rest api.When I sent request to local server from vericek.js,response did not come back but localserver is showing sending datas in terminal. What is the problem. Thank you

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
    <link href="css/ionic.app.css" rel="stylesheet">
    -->

    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="cordova.js"></script>

    <!-- your app's js -->
    <script src="js/vericek.js"></script>
  </head>
  <body>
      <div ng-app="app" ng-controller="ctrl">
          <button ng-click="getData()">Get Data</button>
          <ul>
              <li ng-repeat="d in data">{{d.id}}</li>
          </ul>  
      </div>    
  </body>
</html>

vericek.js

var app=angular.module("app",[]);
app.controller("ctrl",function($scope, $http) {

    $scope.getData=function() {
        $http.get("http://127.0.0.1:1305/listuser").success(function(response){
            $scope.veriler=response.userInfo;   
       });    
    }
});

main.js / rest api

var express=require("express");
var app=express();
var host="127.0.0.1";
var port="1305";
var fs=require("fs");
app.get("/listuser",function(request,response){

    fs.readFile(__dirname+"/"+"user.json","utf-8",function(error,data){
        if(error){
            response.writeHead(404,{"Content-Type":"text/plain"});
            response.end("Page Not Found");
        } else {
            console.log("sent data:"+data);
            response.writeHead(200,{"Content-Type":"text/json"});
            response.end(data);
        }
    });  
});

var server=app.listen(port,host,function(){
   console.log("Listening port ..");
});

user.json

{
    "userInfo":[
        {
            "id":"1",
            "username":"ali",
            "date":"1.1.2016",
            "post":"this is a post",
            "like":"2",
            "liked":false
        },
        {
            "id":"2",
            "username":"veli",
            "date":"2.3.2015",
            "post":"Everyting nonsense",
            "like":"0",
            "liked":false
        }
    ]
}

回答1:

I think you are using the wrong ending to your response in main.js.

response.end() just ends the response process, it doesn't send any data.

You want to use response.send(data)

See here for a similar question