目标:在Angular中检索单个值“ test”。
问题:我收到一条错误消息
错误:SyntaxError:JSON中意外的令牌e,位于JSON.parse()的位置1
我缺少什么语法?
ASP.NET
// https://localhost:44353/api/Jobadvertisement/VVValidate/4
[HttpGet("VVValidate/{id:int}")]
public ActionResult<String> VVValidate(int id)
{
return "test";
}
角度
const url = environment.url
let asdfasdf2 = url + 'api/Jobadvertisement/VVValidate/' + "4";
var dsfsdssf = this.http.get(asdfasdf2).subscribe(data => {
console.log(data);
});
答案 0 :(得分:1)
您需要将ActionResult
更改为string
:
[HttpGet("VVValidate/{id:int}")]
public string VVValidate(int id)
{
return "test";
}
答案 1 :(得分:1)
您可以尝试在Angular中使用httpOptions之类的方法吗?
const url = environment.url;
let asdfasdf2 = url + 'api/Jobadvertisement/VVValidate/' + "4";
var dsfsdssf = this.http.get(asdfasdf2, { responseType: 'text' }).subscribe(data => { console.log(data); });
答案 2 :(得分:1)
Angular的HttpClient
希望默认使用JSON数据,这就是为什么从API返回纯文本时会收到JSON反序列化错误的原因。
您需要将responseType: 'text'
作为选项传递给get
方法,以防止HttpClient
将数据视为JSON:
httpClient.get("url", { responseType: 'text' });
您可以在Angular's Documentation中找到有关此信息的更多信息。
即使您的API代码按原样工作,我也要指出两点:
String
并删除ActionResult
,因为不需要。string
类型而不是System.String
。有关详细说明,请参阅this。应用以下更改后,您的代码将如下所示:
[HttpGet("VVValidate/{id:int}")]
public string VVValidate(int id)
{
return "test";
}