我的api使用PHP Silex发送回这样的JSON响应:
{"response":true,"message":"Bla","userId":"AAA"}
但是我无法在我的Typescript前端中解析它
this.authService.login(body).then((result : any) => {
console.log(result.data); // => {"response":true,"message":"Bla","userId":"AAA"}
let parsed = JSON.parse(result.data);
console.log(parsed.message); // => throws "SyntaxError: Unexpected token in JSON at position 0\n at JSON.parse (<anonymous>)
我的PHP端点使用PHP和Silex Framework:
$app->post('/user/login', function (Request $request) use ($app, $config) {
$email = $request->request->get('user-email');
$password = $request->request->get('user-password');
$rsp = loginUser($email,$password);
return $app->json($rsp);
});
当尝试将json对象硬编码为代码时,它会解析!
更新解决方案 我必须使用trim()来result.data来删除空格,但在某些地方响应是附带空格的,而JSON不喜欢这样。谢谢大家的帮助。
答案 0 :(得分:3)
解决方案
我使用result.data.trim()使其工作,但响应以某种方式包含空格,而JSON不喜欢这样。
答案 1 :(得分:1)
您的PHP代码中可能有\u0000
个字符。
尝试从PHP获得JSON字符串后立即将其删除:
this.authService.login(body).then((result : any) => {
string = result.data.replace("\u0000", "");
string = string.replace("\\u0000", "");
let parsed = JSON.parse(string);