【发布时间】:2016-06-08 10:39:20
【问题描述】:
我正在创建一个仅使用本机节点 http 的微服务器节点 JS。但只有当我发布表单时,我才会返回一个错误。
按照我正在编写的以下代码:
var http = require('http');
var url = require('url');
var querystring = require('querystring');
var contatos = [
{nome: "Bruno", telefone: "9999-2222", data: new Date(), operadora: {nome: "Oi", codigo: 14, categoria: "Celular"}},
{nome: "Sandra", telefone: "9999-3333", data: new Date(), operadora: {nome: "Vivo", codigo: 15, categoria: "Celular"}},
{nome: "Mariana", telefone: "9999-9999", data: new Date(), operadora: {nome: "Tim", codigo: 41, categoria: "Celular"}}
];
var operadoras = [
{nome: "Oi", codigo: 14, categoria: "Celular", preco: 2},
{nome: "Vivo", codigo: 15, categoria: "Celular", preco: 1},
{nome: "Tim", codigo: 41, categoria: "Celular", preco: 3},
{nome: "GVT", codigo: 25, categoria: "Fixo", preco: 1},
{nome: "Embratel", codigo: 21, categoria: "Fixo", preco: 2}
];
var headers = {};
headers["Access-Control-Allow-Origin"] = "*";
headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, OPTIONS";
headers["Access-Control-Allow-Credentials"] = true;
headers["Access-Control-Max-Age"] = '86400'; // 24 hours
headers["Access-Control-Allow-Headers"] = "X-Requested-With, Access-Control-Allow-Origin, X-HTTP-Method-Override, Content-Type, Authorization, Accept";
http.createServer(function (req, res) {
var url_parts = url.parse(req.url);
switch(url_parts.pathname) {
case '/contatos':
res.setHeader('Access-Control-Allow-Origin', '*');
//res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
//res.header('Access-Control-Allow-Headers', 'Content-Type');
res.writeHead(200, {'content-Type': 'application/json'});
res.end(JSON.stringify(contatos));
break;
case '/operadoras':
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
res.setHeader('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
res.writeHead(200, {'content-Type': 'application/json'});
res.end(JSON.stringify(operadoras));
break;
case '/contatos/inserir':
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.setHeader('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
var queryData = '';
req.on('data', function(data) {
queryData += data;
});
req.on('end', function() {
var obj = querystring.parse(queryData);
contatos.push(obj);
});
res.writeHead(200, {'Content-Type' : 'application/json'});
res.end('Objeto inserido.');
break;
default:
res.writeHead(400, {'Content-Type' : 'application/json'});
res.end('Rota não encontrada');
}
}).listen(3000, function () {
console.log('server run on 3000');
});
按照以下说明与 http 帖子分享 Angular:
$scope.adicionarContato = function(contato) {
console.log(contato);
contato.data = new Date();
$http.post("http://localhost:3000/contatos/inserir", contato).success(function (data) {
});
delete $scope.contato;
$scope.contatoForm.$setPristine();
};
现在浏览器中返回的错误:
Error: JSON.parse: unexpected character at line 1 column 1 of the JSON data
fromJson@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:1252:9
defaultHttpResponseTransform@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:9414:1
transformData/<@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:9505:12
forEach@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:336:11
transformData@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:9504:3
transformResponse@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:10276:23
processQueue@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:14745:28
scheduleProcessQueue/<@file:///home/tiago/Dropbox/branas_angularjs/lib/angular/angular.js:14761:27
$RootScopeProvider/this.$get
此代码要点:https://gist.github.com/tiagoeborsanyi/0d2992c67d4cd57f0db5 如果有人可以帮助我,我已经在两天前抓住了它。 : ( 谢谢。
【问题讨论】:
标签: javascript angularjs json node.js