为什么显示错误“ ReferenceError:未定义响应”

时间:2019-07-16 12:08:49

标签: angular

当我尝试消耗响应时,出现此错误 “ ReferenceError:未定义响应”

我的回复格式为

{  
   "status":"success",
   "data":[  
      {  
         "employeeId":2,
         "employeeCode":"e1",
         "employeeName":"Komal",
         "departmentId":1,
         "designationId":1,
         "reportingEmployeeId":1,
         "mobileNumber":"9797979797",
         "emailId":"komal@gmail.com",
         "joiningDate":"2019-09-08T00:00:00",
         "departments":null,
         "designations":null
      }
   ]
}

下面是我的代码

GetAllEmployee() {
    this.employeeService.getAllEmployee().subscribe((response) => this.employees = response.body.data);
  }

这是我的前端代码

 <tr *ngFor="let employee of employees">
                    <td>
                        {{employee.EmployeeCode}}
                    </td>
                    <td>
                        {{employee.EmployeeName}}
                    </td>
                    <td>
                        {{employee.MobileNumber}}
                    </td>
                    <td>
                        {{employee.EmailId}}
                    </td>
                    <td>
                        {{employee.JoiningDate}}
                    </td>
                  </tr>

我做错了。请建议我。

2 个答案:

答案 0 :(得分:0)

使用:

this.employeeService.getAllEmployee()
    .subscribe((response) => {
       this.employees = response.data;
    }, (err) => {
       console.error('Failed with : ', err);
    });

还要交叉检查api是否返回成功的响应。

答案 1 :(得分:0)

我认为此错误可能是由多种原因引起的,您应该检查以下这些原因:

1)检查API的响应,例如从请求返回的数据(显示在Chrome的“网络”标签中,您必须单击请求并选中“响应”标签),HTTP状态(可能是您正在返回数据,但HTTP状态错误)。

2)检查响应的格式,通常如您所显示的那样是JSON,但可能不是有效的JSON,您可以通过复制响应并将其插入https://jsonlint.com/

来进行检查

3)检查响应是否已解析,有时来自API的响应是有效的,但未解析为JSON(我相信版本5起,Angular会自动执行此操作),您可以通过将响应包装在像这样的JSON.parse函数:JSON.parse(response)。

4)Angular无法自动识别响应的结构,我通常在响应中添加一个“ any”类型,以便Typescript不会抱怨响应对象的属性,例如:“ ... (响应:任意)=> console.log(response)...“。

5)检查函数“ getAllEmployee()”是否从“ @ angular / common / http”返回有效的http对象,并且是否具有有效的配置(例如HttpHeaders或“ withCredentials:true”)(如果您是使用身份验证)。

无论如何,最好的办法是将响应记录到控制台并向我们显示内容,请尝试使用以下代码:

this.employeeService.getAllEmployee()
   .subscribe(
      (response: any) => console.log(response), 
      (err) => console.error('Failed with : ', err),
      () => console.log('getAllEmployee finished...')
   );