Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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 张贴并放入角2_Javascript_Angular - Fatal编程技术网

Javascript 张贴并放入角2

Javascript 张贴并放入角2,javascript,angular,Javascript,Angular,我需要一些帮助。我正在构建一个图书馆应用程序。我需要从服务器获取书籍、标题和作者的列表,并能够更新和将新书插入服务器上的数据库。Get方法工作正常,我得到了所有信息的列表,但是pust方法由于这个错误而无法工作 POST http://localhost:3002/app/components/bookdata/dbooks.json 404 (Not Found) import {Injectable} from '@angular/core'; import {Http,Respon

我需要一些帮助。我正在构建一个图书馆应用程序。我需要从服务器获取书籍、标题和作者的列表,并能够更新和将新书插入服务器上的数据库。Get方法工作正常,我得到了所有信息的列表,但是pust方法由于这个错误而无法工作

POST http://localhost:3002/app/components/bookdata/dbooks.json 404 (Not 
Found)



import {Injectable} from '@angular/core';
import {Http,Response} from '@angular/http';
import {Headers} from '@angular/http';
import 'rxjs/add/operator/map';
import {RequestOptions} from  '@angular/http';

@Injectable()
export class BookService  {
public _url:string="app/components/bookdata/dbooks.json";

constructor(private _http:Http){}
getBooks(){

    return this._http.get(this._url)
    .map((res:Response)=>res.json());
}

insertNewBook(book:Book){



            let body=JSON.stringify(book);
            let headers=new Headers({'Content-Type':'application/json'});
            let options=new RequestOptions({headers:headers});
            this._http.post(this._url,body).subscribe();


       //  .map((res:Response)=>res.json());


    }
        }




export interface Book{
id:number;
Author:string;
Date:string;
Title:string;
}
这就是我发送它的方式

 import{Component,OnInit} from '@angular/core';
 import {Book} from '../services/book.service'
 import {Injectable} from '@angular/core';
 import {Http,Response} from '@angular/http';
 import {BookService} from '../services/book.service';
 import 'rxjs/add/operator/map';

 @Component({
 selector:'newBook',
 template:`
            <div>

            <div>
                <label for="Author">Author:</label>
                <input type="text" id="au" #au>
        </div>

        <div>
        </div>
        <div>

        <label for="Date">Date:</label>
        <input type="text" id="da" #da>
</div>

<div>
<label for="Titl">Title:</label>
<input type="text" id="ti" #ti>
</div>
<button (click)="InsertData(au.value,da.value,ti.value)">Create</button>
</div>

这对您不起作用的原因是,您没有发布到API,您正在写入的显然只是一个静态文件。当你只需要一个get请求就可以调用应用程序中的url时,只需将json返回给你就足够了,但还不足以用它做任何其他事情


如果希望通过POST请求修改文件,则必须使用服务器端技术编写API,在该服务器上托管文件,并根据请求对其执行传统的文件操作。在节点中,下面是您如何构建的,下面是一个如何构建In节点的示例。(如果您不熟悉Node,它是一种javascript服务器端语言,如果您熟悉angular,您很快就能学会)

这个url存在吗<代码>http://localhost:3002/app/components/bookdata/dbooks.json。如果存在,是否应该收到帖子?它听起来像是一个JSON文件,用于获取数据。JSON文件不会收到POST请求。谢谢您的回答。我如何更新JSON文件?是的,它确实存在,我可以从中获取数据,但我还需要更新它并向其中添加数据。您需要使用服务器端技术作为节点读写该文件。但您也可以“虚拟”地处理更改。对于节点,它看起来如下所示:
 })
export class NewBookComponent  {
 book:Book;
static num:number;

constructor(private _bookService:BookService){
    NewBookComponent.num=10;
}

InsertData(au:string,da:string,ti:string){

   let book:Book={id:NewBookComponent.num++,Author:au,Date:da,Title:ti};


                 this._bookService.insertNewBook(this.book);
             //.subscribe(res=>console.log(res));


}

}