5 回答
TA贡献1862条经验 获得超6个赞
为此,我个人要感谢两个人,他们是:
Nijeesh Joshy用于排序的最大问题 METHOD to METHOD 与 PHP 脚本的矛盾。
布拉德解释了正确的格式以使操作顺利运行
调查结果:为了使这项工作正常工作,即$_POST工作 POST 方法,您需要在 header 中发送 application/x-www-form-urlencoded Content-Type。我不知道,但在 Content-Type 中发送数据是application/json行不通的。
解决方案:
1. SyntaxError: Unexpected token N =>这样做是因为在 PHP 脚本中,它必须在 中返回json_encode(),这就是为什么它No phone number found, N at 0th position在 else 脚本中的此语句中返回此错误。
<?php
include('/Applications/MAMP/htdocs/api/Requests/library/Requests.php');
$request_method = $_SERVER['REQUEST_METHOD'];
if ( $request_method == 'POST' ){
if(isset($_POST['phone_num'])){
echo $_POST['phone_num'];
}else{
echo json_encode('No phone number found');
}
}else {
echo json_encode('No defined function for this method. Please use POST only');
}
?>
2. $_POST 不适用于 Angular 代码中的 POST 方法 =>已在上面解释。
import { Component } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
export class AppComponent {
message: string;
url: string = 'xxxxxxx';
customernum: number;
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
body: any = `phone_num=${this.customernum}`;
constructor(private http: HttpClient){}
callMe(){
this.message = 'Please wait....'
this.http.post(this.url, this.body, this.httpOptions).subscribe(
response => console.log(JSON.stringify(response)),
error => console.log(error)
);
}
}
如果您仍然遇到错误,那么您的角度代码中会有一些格式错误。请点击此链接。我希望这对你有帮助。我看到人们对使用非常严格$_POST[] in place of $_GET[],但这Content-Type就是问题所在。
TA贡献1842条经验 获得超12个赞
SyntaxError: Unexpected token N in JSON 意味着你有一些格式错误的 JSON,它通常是一个没有用引号括起来的字符串。
1) 检查 this.customernum 是否不为空或不包含任何坏字符。
2) 用双引号将 phone_num 括起来。
TA贡献1829条经验 获得超9个赞
如果您使用的是表单而不是尝试直接从该表单添加值,而不是任何额外的变量。用您的表单名称替换此处的表单
this.http.post(this.url, { 'phone_num': this.form.value.phoneForm}, this.httpOptions).subscribe(
response => console.log(JSON.stringify(response)),
error => console.log(error)
);
TA贡献1942条经验 获得超3个赞
传递原始对象{ 'phone_num': this.customernum },不要使用JSON.stringify()
试试这样:
callMe(){
this.message = 'Please wait....'
this.http.post(this.url, { 'phone_num': this.customernum }, this.httpOptions).subscribe(
response => console.log(JSON.stringify(response)),
error => console.log(error)
);
}
- 5 回答
- 0 关注
- 256 浏览
添加回答
举报