2016-11-16 131 views
0

我还是这个新手,但我试图发布我自己的数据到https://jsonplaceholder.typicode.com/users用于学习目的。在页面的底部,它说使用npm install -g json-server,所以我在我的项目中运行了该命令,并试图将数据发布到上面的网址,并且我也试着将它发布到静态json文件中,认为它可能以某种方式托管文件npm install -g json-server命令,但是我知道使用本地文件时没有找到json文件,如果我尝试发布到上面的url,那么它会显示一个帖子在控制台日志中,但我的表与用户从不更新。任何人都可以告诉我如何得到这个工作,所以我可以看到我的POST数据?发布到json服务器问题

user.service.ts

 import {Injectable} from '@angular/core'; 
import 'rxjs/add/operator/map'; 
import {Http, Headers} from '@angular/http'; 
import {User} from './user'; 
@Injectable() 
export class UserService{ 
constructor(private _http:Http){ 


} 
getUsers(){ 
return this._http.get('http://localhost:4200/users') 
.map(res=>res.json()); 

} 
addUser(post){ 

return this._http.post('http://localhost:4200/users', post) 
.map(res=> res.json()); 



} 
} 

form.component.ts

import { Component, OnInit } from '@angular/core'; 
import {UserService} from '../users.service'; 
import {Http} from '@angular/http'; 
import {Router} from '@angular/router'; 
import {FormGroup, FormControl} from '@angular/forms'; 

@Component({ 
    selector: 'app-form', 
    templateUrl: './form.component.html', 
    styleUrls: ['./form.component.css'], 
    providers: [UserService] 

}) 
export class FormComponent implements OnInit{ 
    private user; 

    private _users; 
    constructor(
    private _userService:UserService 


){ 


    } 

userForm = new FormGroup({ 
name: new FormControl(), 
username: new FormControl(), 
email: new FormControl(), 
address: new FormGroup({ 
    street: new FormControl(), 
    suite: new FormControl(), 
    city: new FormControl(), 
    postalcode: new FormControl() 

}) 

}); 
onSubmit(){ 
this._userService.addUser(this.userForm.value) 
.subscribe(res => { 
this.user = res; 
console.log(res); 

}) 

} 

} 
+0

您是否启动服务器?此外,您的网址似乎仍然指向在线版本,而不是您自己的本地版本。 –

+0

我试过把它指向两者。我发布了上面的代码以指向在线,但我也试过将它指向app/users.json,它是本地文件,但得到消息说它没有找到。它与GET请求的路径相同,所以我知道路径是正确的。我更新了上面的代码以反映本地json文件 – user6680

回答

0

你不需要点,现在你让服务器运行到App/users.json。每documentation,你可以发布到http://localhost:3000/users

+0

我更新了上面的代码以反映您的建议,但它现在不在GET中提取任何json数据,并且users.json位于app目录中。错误:意外的标记<位于0的JSON中 – user6680

+0

您可能想要检查服务器是否一切正常,它可能会返回错误。 –

0

我相信你错过了公共服务(什么是合理的)

Note: the resource will not be really created on the server but it will be faked as if.

,因为你已经在本地安装,只需要运行:

$ jsonplaceholder

后更换您的网址,主机名Angular to http://localhost:3000

+0

我运行了npm install -g json-server命令(这是你运行jsonplaceholder的意思吗?)它现在不会在GET中提取任何json数据,而users.json在app目录中。错误:意外的标记<在JSON中的位置 – user6680

+0

抱歉,我认为你运行了(npm install -g jsonplaceholder),因为它在文档中写入后,你应该能够使用(jsonplaceholder)作为命令,如(gulp或任何其他npm libs全局安装),json-server是jsonplaceholder使用的lib – 2oppin