Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IONIC 3应用程序未正确发布JSON_Json_Node.js_Express_Ionic3 - Fatal编程技术网

IONIC 3应用程序未正确发布JSON

IONIC 3应用程序未正确发布JSON,json,node.js,express,ionic3,Json,Node.js,Express,Ionic3,我希望我能在这方面得到一些帮助。下面是我写的用于发布电子邮件和pin的代码。在它到达服务器之前,一切看起来都很好。服务器将其处理为: { '{"email":"email@gmail.com","pin":"1234"}': '' } 我不确定问题出在哪里。我试着通过邮递员发送电子邮件和pin,这样做没有问题。我甚至包括了POSTman创建的标题(内容类型:application/x-www-form-urlencoded),以确保我以相同的方式发送所有信息 这是我的爱奥尼亚密码: expor

我希望我能在这方面得到一些帮助。下面是我写的用于发布电子邮件和pin的代码。在它到达服务器之前,一切看起来都很好。服务器将其处理为:

{ '{"email":"email@gmail.com","pin":"1234"}': '' }
我不确定问题出在哪里。我试着通过邮递员发送电子邮件和pin,这样做没有问题。我甚至包括了POSTman创建的标题(内容类型:application/x-www-form-urlencoded),以确保我以相同的方式发送所有信息

这是我的爱奥尼亚密码:

export class LoginPage {
  baseURL: string = 'http://localhost:1000/api'
  data: any;

  constructor(public navCtrl: NavController, public navParams: NavParams, private http: Http) {
  }

  login(email, pin) {

    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    let options = new RequestOptions({ headers: headers });

    let body = JSON.stringify({
      email:  email,
      pin:  pin
    });

    console.log(body); //This looks just like it's supposed to

    this.http.post(this.baseURL + '/authenticate', body, options)
      .map(res => res.json())
      .subscribe(data => {
        console.log(this.data);
      }, error => {
        console.log("Oooops!");
      });
  };

}
这是我服务器的代码,以防我把上面的东西弄乱了

// ===========================
// get the packages we need ==
// ===========================
var express    = require('express');
var app        = express();
var bodyParser = require('body-parser');
var morgan     = require('morgan');
var mongoose   = require('mongoose');
var bcrypt     = require('bcryptjs');
var router     = express.Router();

var jwt        = require('jsonwebtoken'); // used to create, sign, and verify tokens
var config     = require('./config'); // get our config file
var models     = require('./app/models/models');

// =======================
// configuration =========
// =======================
var port = process.env.PORT || 1000;
mongoose.connect(config.database); // connect to database
app.set('secret', config.secret); // secret variable

// use body parser so we can get info from POST and/or URL parameters
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
app.use(bodyParser.json()); // support json encoded bodies

// use morgan to log requests to the console
app.use(morgan('dev'));

// =======================
// routes ================
// =======================
// basic route
app.get('/', function (req, res) {
  res.send('Hello! The API is at http://localhost:' + port + '/api');
});

var apiRoutes = express();

// apply the routes to our application with the prefix /api
app.use('/api', apiRoutes);

// API ROUTES -------------------

//===============================
// Log a user into their account.
//===============================
apiRoutes.post('/authenticate', function (req, res) {
  console.log(req.body); //here I'm getting: { '{"email":"email@gmail.com","pin":"1234"}': '' }
  res.json(req.body);
});

app.listen(port);
console.log('Stuff happens at http://localhost:' + port);

将URLSearchParams用于正文,检查我在这里给出的答案是否有帮助:简而言之,您的
内容类型应该是
application/json
,而不是
application/x-www-form-urlencoded
。感谢您的快速回复!我已经尝试过了,在服务器端我得到了OPTIONS/api/authenticate 403,我假设这是一个CORS飞行前选项请求。网上有很多关于CORS的信息,但可能是开始阅读的地方。
import { Http, URLSearchParams } from '@angular/http';


//make url params

 let body = new URLSearchParams();
    body.append('email', 'test@tst.com');
    body.append('pin', '123456');