Javascript 如何在html中显示数据库中的数据,而不必在每次单击输入时刷新页面?

Javascript 如何在html中显示数据库中的数据,而不必在每次单击输入时刷新页面?,javascript,angular,typescript,rxjs,Javascript,Angular,Typescript,Rxjs,每次单击输入时,我都会将数据发送到数据库,并以html显示,但我需要刷新数据库 用于显示的页面如何不每次刷新 是否必须使用setInterval添加一个函数名刷新页面?我不知道这样做是否好 HTML 梅布雷斯德奎佩斯酒店 名称 名称 名称 {{mydata.name} 应用程序组件.ts 从'@angular/common/http'导入{HttpClient}; 从“@angular/core”导入{Component,OnInit}; 从'@angular/forms'导入{FormBu

每次单击输入时,我都会将数据发送到数据库,并以html显示,但我需要刷新数据库 用于显示的页面如何不每次刷新

是否必须使用
setInterval
添加一个函数名刷新页面?我不知道这样做是否好

HTML


梅布雷斯德奎佩斯酒店
名称
名称
名称
{{mydata.name}
应用程序组件.ts

从'@angular/common/http'导入{HttpClient};
从“@angular/core”导入{Component,OnInit};
从'@angular/forms'导入{FormBuilder,FormGroup,FormControl};
@组成部分({
选择器:'应用程序根',
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent实现OnInit{
getUrl:string=http://localhost/get.php';
姿势:字符串http://localhost/post.php';
数组=[];
reactiveForm=新表单组({
名称:new FormControl(),
});
构造函数(私有httpClient:httpClient,私有formBuilder:formBuilder){}
恩戈尼尼特(){
这是一个.getMethod();
}
后方法(){
让myFormData=new FormData();
myFormData.append('name',this.reactiveForm.value.name);
返回this.httpClient.post(this.postrl、myFormData、,
{responseType:'text'})。订阅(
(响应)=>console.log(响应),
(错误)=>console.log(错误)
);
}
getMethod(){
this.httpClient.get(this.getUrl).subscribe(数据=>{
这个.array.push(数据);
},error=>console.error(error));
};
onSubmit(){
这是postMethod();
};
}

在POST方法中,您只打印需要将响应分配给
数组的响应,即

postMethod() {
  let myFormData = new FormData();
  myFormData.append('name', this.reactiveForm.value.name);

  return this.httpClient.post(this.postUrl, myFormData,
   { responseType: 'text' }).subscribe(
     (response) => this.array.push(response),
     (error) => console.log(error)
   );
}
或者,您可以在成功响应POST后简单地调用GET方法,即

postMethod() {
  let myFormData = new FormData();
  myFormData.append('name', this.reactiveForm.value.name);

  return this.httpClient.post(this.postUrl, myFormData,
   { responseType: 'text' }).subscribe(
     () => this.getMethod(),
     (error) => console.log(error)
   );
}

希望这能起作用。

您可以使用websocket。感谢您的帮助,我尝试了以下方法:postMethod(){let myFormData=new FormData();myFormData.append('name',this.reactiveForm.value.name);返回this.httpClient.post(this.postrl,myFormData,{responseType:'text'})。订阅((响应)=>{this.array.push(响应);},(错误)=>console.log(错误));}是吗?@Richard我已经更新了我的答案,现在你可以尝试两个例子。我尝试了两个例子,但仍然不起作用。我必须刷新整个页面。这两种技术都应该起作用。但请注意,您的HTML包含以下内容:
*ngFor=“let mydata of array[0]”
,这使得它只显示数组中的第一项。看起来您需要将其更改为:
*ngFor=“let mydata of array”
以显示数组的所有元素。如果我删除此*ngFor=“let mydata of array[0]”,则[0]将不再显示任何内容,我将在显示的表中显示所有数据