无法通过Rest API从客户端Ajax POST请求接收数据

穆罕默德·穆达西(Muhammad Mudassir)

我在服务器上构建了一些其余的API,并从其他域调用它们,但Get请求工作正常,但是在调用POST请求时遇到了问题。

我无法在客户端发送的服务器上接收数据。

服务器代码:

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
//var fn = require('fn')

var app = express();
var allowCrossDomain = function(req, res, next) {

    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

    // intercept OPTIONS method
    if ('OPTIONS' === req.method) {
        res.send(200);
    }
    else {
        next();
    }
};

// all environments
app.set('port', process.env.PORT || 3000);
app.use(allowCrossDomain);


// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}
app.post('/user', user.saveUser);


http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

exports.saveUser = function(req, res) {
    var key = req.body.key; //fb,twitter,web
    var userData = req.body.userData;
    var result  = checkUser(userData,key);        
}

客户在哪里进行请求的代码:

var data = { key: 'web', userData: userData }
$.ajax({
    method: "POST",
    //contentType: 'application/json',
    url: "www.acbd.com/user",
    //url:"http://prayable-21641.onmodulus.net/user",
    data: data,
    crossDomain: true,
    dataType: "json"
}).success(function (data, textstatus) {
    // this callback will be called asynchronously
    // when the response is available

    console.log(data)
    console.log(textstatus)
}).error(function (data, textstatus) {
    console.log(data)
    console.log(textstatus)
    // called asynchronously if an error occurs
    // or server returns response with an error status.
});

我无法在服务器上获取密钥或userData,它说未定义:

TypeError:无法读取未定义的属性“键”

Oronbz

您忘记了需要并使用body-parser中间件模块。

而且,为什么内容类型被注释掉了?你需要它

服务器代码应如下所示:

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
//var fn = require('fn')

//requiring body-parser
var bodyParser = require('body-parser');

var app = express();
var allowCrossDomain = function(req, res, next) {

  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

  // intercept OPTIONS method
  if ('OPTIONS' === req.method) {
      res.send(200);
  }
  else {
      next();
  }
};

// all environments
app.set('port', process.env.PORT || 3000);
app.use(allowCrossDomain);


// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

// using body-parser
app.use(bodyParser());

app.post('/user', user.saveUser);


http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

另外,别忘了npm安装它:

npm install body-parser

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Visual Studio无法在我的Rest API客户端中添加庞大的元数据文件

无法从POST / PUT请求获取资源(.NET FHIR客户端,Web API 2)

无法访问从React客户端到Rails api的POST请求中发送的参数

C#Web API在HTTP Post REST客户端中发送正文数据

无法通过 RSC cli 发送客户端请求

通过Java客户端发送POST请求的unicode数据会导致?

从XML转换为REST客户端以进行POST请求

具有devise的Rails API,无法通过客户端的JSON调用运行POST #create方法

除非刷新客户端,否则无法接收 POST 数据。为什么?如何在页面加载之前等待接收发布数据?

如何在 REST API 中获取请求的客户端主机名

客户端对API的请求如何通过Azure上托管的网关进行路由?

通过客户端库的 Google Classroom Api 批量请求

无法从客户端获取JSON数据

REST API:如何确保客户端已收到所有数据?

在Go中使用外部API后,使用REST客户端保存数据

REST API-客户端会话状态与数据库会话状态

如何使用jersey 2.19 REST API管理客户端/服务器会话数据

如何使用odoo rest api服务器从客户端获取数据?

无法在 PHP 中接收 AJAX POST 数据

角度6:无法将api数据绑定到客户端中的var

无法解密使用Java的Google API客户端抛出的数据异常

通过REST API创建Keycloak客户端

Linux - 通过 UDP 接收数据;接受 TCP 连接,将数据传递给客户端

Java REST API客户端

jQuery $ .ajax通过发送POST接收到400错误请求

无法从Android客户端调用API

SignalR 客户端不通过 Masstransit 接收消息

接收Ajax POST请求时,PHP mail()无法正常工作

Android Socket客户端无法发送和接收消息