Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Node.js 为什么request.body是空的?_Node.js_Ajax_Angular_Http_Express - Fatal编程技术网

Node.js 为什么request.body是空的?

Node.js 为什么request.body是空的?,node.js,ajax,angular,http,express,Node.js,Ajax,Angular,Http,Express,我一直在使用Mean stack构建一个简单的博客应用程序,我似乎很挣扎,request.body始终为空,即使我在这里发送数据,这是代码,请求在Chrome网络选项卡中始终处于挂起状态,直到它给出Err_conction_densed或诸如此类的消息,注意我将表单数据传递给服务,这就是问题所在 注册服务 import { Injectable } from '@angular/core'; import {Http, Headers} from '@angular/http'; import

我一直在使用Mean stack构建一个简单的博客应用程序,我似乎很挣扎,request.body始终为空,即使我在这里发送数据,这是代码,请求在Chrome网络选项卡中始终处于挂起状态,直到它给出Err_conction_densed或诸如此类的消息,注意我将表单数据传递给服务,这就是问题所在

注册服务

import { Injectable } from '@angular/core';
import {Http, Headers} from '@angular/http';
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class RegisterService {

  constructor(private http: Http) { }
// A form data is passed as an argument to this function
      register(user) {
        let headers = new Headers();
        headers.append("Content-Type", "multipart/form-data")
        return this.http.post("http://localhost:3000/api/users/register", user, {headers})
        .pipe(map(res => res.json()))
    }
}
服务器端的路由(注意:不要担心req.file.path)


第一步
npm i主体解析器

安装模块后,将以下代码添加到app.js

var bodyParser = require("body-parser");

app.use(bodyParser.urlencoded())


app.use(bodyParser.urlencoded({
  extended: true
}));
编辑

使用的URL是
http://localhost:3000/api/users/register

但您的路线仅为
/register


您的路由和传递的URL应该匹配

1st step
npm i body parser

安装模块后,将以下代码添加到app.js

var bodyParser = require("body-parser");

app.use(bodyParser.urlencoded())


app.use(bodyParser.urlencoded({
  extended: true
}));
编辑

使用的URL是
http://localhost:3000/api/users/register

但您的路线仅为
/register


您的路由和传递的URL应该匹配

可能的重复项,因为您似乎没有在后端使用bodyParser。有关更多详细信息,请参阅可能的副本,它似乎不在后端使用bodyParser。有关更多详细信息,请参阅。我听说bodyparser不处理表单数据。如果我错了,请纠正我,注意这是表单数据。wgich包含文本字段和图像。我使用express Router,它与路由无关。您的http请求应如下所示:在添加bodyparser.urlencoded()后返回this.http.post(“,user,{headers})并删除标题。append(“内容类型”,“多部分/表单数据”)@OmarAli great。。请接受我的回答,这样它也会帮助其他人。我听说bodyparser不处理表单数据。如果我错了,请纠正我,注意这是表单数据wgich包括文本字段和图像。我使用的是express Router,而不是路由。您的http请求应该是这样的:返回这个.http.post(“,user,{headers})在添加bodyparser.urlencoded()并删除headers.append(“内容类型”,“多部分/表单数据”)@OmarAli great。。请接受我的回答,这样也能帮助别人。