Я делаю сайт, который использует 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: "" }
Вот фотография моего браузера консоли, когда я делающего запрос:
Я просто не могу понять, почему 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);
Что вы имеете в виду, что «запрос не работает»? Вы получили сообщение об ошибке? Вызывается ли обратный вызов ошибки? –
Да, вызвана ошибка обратного вызова, поэтому я предполагаю, что запрос завершается с ошибкой. – Nyoa
Возможно, проверьте этот пост: http://stackoverflow.com/questions/19821272/nodejs-http-request-from-angularjs –