Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Angular 角度HttpClient:Post方法未正确设置参数_Angular_Ionic Framework_Rxjs_Httpclient - Fatal编程技术网

Angular 角度HttpClient:Post方法未正确设置参数

Angular 角度HttpClient:Post方法未正确设置参数,angular,ionic-framework,rxjs,httpclient,Angular,Ionic Framework,Rxjs,Httpclient,在我的方法transmitProjectproject:ProjectModel:Observable中有一个post请求,可通过HttpClient将数据发布到后端: -在我的transmitProject方法中 。。。直到这里一切都很好。但是请求将post数据设置为json格式。要测试后端服务器,请返回转储的$\u POST变量->null 请求有效负载: {projectId:…,description:…,经度:10,纬度:10,…} 实际上应该是: projectId=…descrip

在我的方法transmitProjectproject:ProjectModel:Observable中有一个post请求,可通过HttpClient将数据发布到后端:

-在我的transmitProject方法中

。。。直到这里一切都很好。但是请求将post数据设置为json格式。要测试后端服务器,请返回转储的$\u POST变量->null

请求有效负载: {projectId:…,description:…,经度:10,纬度:10,…}

实际上应该是: projectId=…description=…经度=10纬度=10


->在《邮递员》中,一切都很好。

这并不明显,但您没有以正确的方式使用httpClient

您可以在中找到对这种情况的解释

如果您不想使用JSON,但想坚持使用x-www-form编码,那么您的代码应该如下所示:

const body=新的HttpParams .设置“您的属性名称”,**属性值** 设置 返回this.http.posthis.conf.url, body.toString, { 标题:新的HttpHeaders .set'Content-Type','application/x-www-form-urlencoded' } 管与您已有的代码相同。。。;
这里的问题是Angular默认发送JSON类型的post请求

您可以更改PHP后端并使用$\u POST读取JSON:

或者如果您真的想以x-www-form-urlencoded的形式发送 您可以使用URLSearchParams自动将内容类型设置为application/x-www-form-urlencoded:

let body=新的URLSearchParams; 设置“用户名”,用户名; 设置“密码”,密码; this.http.posthis.loginUrl,body.map。。。; 当然,如果你像这样正确编码你的身体,你也可以手动完成

let body = `username=${username}&password=${password}`;
但是您必须手动将标题设置为application/x-www-form-urlencoded

像这样

this.http.post(this.loginUrl, body, { headers: headers }).map(...);

请尝试使用JSON.stringifyprams,您可以使用JSON传输数据。你想把它们编码成表格吗?谢谢你,麦克。你的方法是正确的吗?或者有更好的方法吗?我认为坚持使用JSON更自然,因为它现在是广泛使用的标准。所以,如果您不需要x-www-form,就让Angular标准库在内容类型为application/json时发挥作用。这样,接收端就知道如何解码有效负载JSON.decode或类似内容,具体取决于语言。查看HttpClient上的Angular文档,了解示例:Hi xzesstence,谢谢。你能推荐一个更好的方法吗?这样看来,这听起来像是一个大杂烩。最先进的技术是什么?因为您使用的是angular,我建议使用json并更改后端,正如我前面所说的,它简单易用。如果它有帮助,我非常感谢你把它标记为答案。如果你还有其他问题,只要问:干杯你们两个都帮了我。无法通过标记来决定:-@xzesstence查看您的活动页面,我发现您有一系列的反对票。我认为你正被一个用户锁定。您可以标记此答案,选择需要主持人干预的选项,并描述您的问题。
this.http.post(this.loginUrl, body, { headers: headers }).map(...);