Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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/jquery/89.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
Javascript 如何将包含对象的正文而不是字符串发布到http api?angular2?_Javascript_Angular_Http_Post - Fatal编程技术网

Javascript 如何将包含对象的正文而不是字符串发布到http api?angular2?

Javascript 如何将包含对象的正文而不是字符串发布到http api?angular2?,javascript,angular,http,post,Javascript,Angular,Http,Post,我正在以下服务中使用angular2http.post: import {Injectable, Inject} from 'angular2/core' import {Http, Response, RequestOptions, Headers, Request, RequestMethod} from 'angular2/http'; import 'rxjs/add/operator/map'; //Globals const URL : string = 'http://myur

我正在以下服务中使用angular2
http.post

import {Injectable, Inject} from 'angular2/core'
import {Http, Response, RequestOptions, Headers, Request, RequestMethod} from 'angular2/http';

import 'rxjs/add/operator/map';

//Globals
const URL : string = 'http://myurl.com/listings';

@Injectable()
export class ListingsService {

  //Constructor
  constructor(public http: Http) {}

  postListing(data) {
   this.http.post(URL, data).map(res => res.json())
  }

}

问题是,我只允许在http.post中以字符串形式发布数据,因为我需要在其中传递对象。

一种方法是使用JSON.stringify生成对象字符串,然后在服务器端使用JSON.parse。

正如binariedMe提到的,JSON.stringify将执行您想要的操作。
如果要发送二进制数据,可能需要查看BSON:

可能需要在标头中设置内容类型。您可以按如下方式设置默认标题

class MyOptions extends RequestOptions {
constructor() {
    super({
        headers: new Headers({
            'Content-Type': 'application/json; charset=utf-8',
            'Accept': 'application/json'
        })
    });
   }
}

bootstrap(AppComponent, [
   ...,
   provide(RequestOptions, {useClass: MyOptions})
]);