2017-01-18 2 views
0

Я делаю сайт, который использует angularjs в сочетании с nodejs и mongoDB для обработки логинов и других бэкэндов. Я создал API с nodejs, и его можно успешно протестировать, перейдя на localhost: 8080/api или отправив HTTP-GET по почте. Однако, когда я пытаюсь сделать HTTP-GET, используя мой код angularjs, запрос завершается с ошибкой и возвращает пустой объект.HTTP-запросы, не проходящие в среде nodejs/angularjs

Object { data: null, status: -1, headers: bd/<(d), config: Object, statusText: "" } 

Вот фотография моего браузера консоли, когда я делающего запрос:

enter image description here

Я просто не могу понять, почему API отлично работает через браузер и Почтальон, но сбой при попытке создания запросов в коде.

--------------------------------- РЕШЕНИЕ ------------ ---------------------

мне пришлось добавить строку кода, чтобы в ответ на изменение этого:

router.get('/', function(req, res) { 
    res.json({ message: 'hooray! welcome to our api!' }); 
}); 

к этому:

router.get('/', function(req, res) { 
    res.set('Access-Control-Allow-Origin', '*');  
    res.json({ message: 'hooray! welcome to our api!' }); 
}); 

---------------------------------- РЕШЕНИЕ -------- ----------------------------

Вот мой angularjs код

var mainApp = angular.module('mainApp', ['ngRoute']); 

mainApp.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/frontpage', { 
     templateUrl: 'public/views/frontpage.html', 
     controller: 'frontpageController', 
     activetab: 'frontpage' 
    }). 
     when('/login', { 
     templateUrl: 'public/views/login.html', 
     controller: 'loginController', 
     activetab: 'login' 
     }). 
     otherwise({ 
     redirectTo: '/frontpage' 
     }); 
}]); 

mainApp.controller('mainController', function($scope, $route){ 
    $scope.$route=$route; 
}); 

mainApp.controller('frontpageController', function($scope){ 
    $scope.test="frontpage"; 
}); 

mainApp.controller('loginController', function($scope, $http){ 
    $scope.rememberMe = false; 
    $scope.submit = function(user){  
    $http({ 
     method: 'GET', 
     url: 'http://localhost:8080/api' 
     }).then(function successCallback(response) { 
      console.log(response); 
     }, function errorCallback(response) { 
      console.log('dindu work'); 
      console.log(response); 
     }); 
    }; 
}); 

А вот мой nodejs код сервера

// server.js 

// BASE SETUP 
// ============================================================================= 

// call the packages we need 
var express = require('express');  // call express 
var app  = express();     // define our app using express 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose') 

// configure app to use bodyParser() 
// this will let us get the data from a POST 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var port = process.env.PORT || 8080;  // set our port 

mongoose.connect('mongodb://localhost/saunaguard') 

var db = mongoose.connection; 

db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function(){ 
    console.log('succes') 
}); 

// ROUTES FOR OUR API 
// ============================================================================= 
var router = express.Router();    // get an instance of the express Router 

// test route to make sure everything is working (accessed at GET http://localhost:8080/api) 
router.get('/', function(req, res) { 
    res.json({ message: 'hooray! welcome to our api!' }); 
}); 

// more routes for our API will happen here 

// REGISTER OUR ROUTES ------------------------------- 
// all of our routes will be prefixed with /api 
app.use('/api', router); 

// START THE SERVER 
// ============================================================================= 
app.listen(port); 
console.log('API open in port ' + port); 
+0

Что вы имеете в виду, что «запрос не работает»? Вы получили сообщение об ошибке? Вызывается ли обратный вызов ошибки? –

+0

Да, вызвана ошибка обратного вызова, поэтому я предполагаю, что запрос завершается с ошибкой. – Nyoa

+0

Возможно, проверьте этот пост: http://stackoverflow.com/questions/19821272/nodejs-http-request-from-angularjs –

ответ

1

Если веб-приложение и ваш nodejs бэкенд находятся на разных URL-адресов, попробуйте следующее:

res.set('Access-Control-Allow-Origin', '*'); 
Смежные вопросы