过去几天我一直在尝试将使用Ionic Framework制作的Android应用程序与SQL数据库连接起来。经过一些研究后,我明白在我的前端和后端之间我需要一个RESTful API
来帮助这两者之间的沟通。因此,当我使用Ionic构建我的应用程序时,我开始使用NodeJS制作服务器。我在MySQL和NodeJS之间建立了连接,这是一个非常简单的hello world脚本,我将在下面输入。
//Setup
var db = require('./db');
var express = require('express');
var app = express();
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header(
'Access-Control-Allow-Headers',
'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
);
if ('OPTIONS' === req.method) {
res.status(200).end();
} else {
next();
}
});
//Config
function handle_database(req, res) {
db.connect(db.MODE_PRODUCTION, function (err) { //connect to database
if (err) throw err;
console.log("Connected");
})
res.send("hello world");
// db.select('*', 'enikio1.customer', 'FirstName = "Nick"', res);
}
app.get("/", function (req, res) {
handle_database(req, res);
});
//Listen,Hey
app.listen(3000);
console.log("App listening on port 3000");
但是当我在我的应用程序中时,我无法从服务器获得响应。我使用Angular的Ajax来获取响应并只显示我对字符串的响应但没有任何反应。出于某种原因,我无法从服务器获得响应。为了澄清一些东西,我的MySQL服务器托管在Azure上,但我在localhost上运行(现在)我的NodeJS服务器。我运行前端到Android模拟器(Android SDK的标准之一)。我也有服务器端和前端在不同的位置,不知道这是一个问题,但我看到每个教程制作一个带有Node和角度的Web应用程序将它们放在同一个工作场所,我将它们分开,因为它应该是是一个移动应用程序。这是我的控制器。
.controller('AccountCtrl', function ($scope, $state,$http,$ionicPopup, $rootScope) {
$scope.signin = function() //signin is in the submit button
{
console.log("Some")
str="http://localhost:3000";
data = {};
datastr = "";
$http.get(str)
.success(function (response){
// data = response[0].Email;
// $scope.data.email = data;
datastr = response;
$scope.server = datastr; //server is a label
})
}
});
现在我对网络/应用程序开发显然很陌生,不知道发生了什么,我真的很想开始学习AngularJS,cordova框架以及所有这些以及现在我还有机会学习NodeJS超级有用,但这个问题让我很困惑。根据我的理解,当应用程序进入我的路径时,它应该得到一个响应,我保存到datastr然后我将其传递给$scope.server
这是一个标签,因此hello world
将打印。但没有任何反应。
有什么想法吗?
答案 0 :(得分:0)
你应该用str =“http:// localhost:3000”中的服务器的ip地址替换localhost,它们应该在同一个网络中
答案 1 :(得分:0)
您可以使用ionic serve
在浏览器上运行该应用,并检查是否有任何错误消息。似乎是CORS
问题。有关Ionic
CORS
的更多信息,请查看http://blog.ionic.io/handling-cors-issues-in-ionic/