怎樣OUTPUT JSON DATA?

我的程式是由PHP 裏讀取DATA,然後在ANGULAR 輸出資料,但是當我想輸出console.log(this.studdata.list_id) 時,它顯示undefined。

public userid: string;

studdata: Studentinformation;

ngOnInit(): void {

const options = { responseType: 'text' as 'json'};

const myformdata = new FormData();

const uid = +this.route.snapshot.paramMap.get('id');

this.userid = uid.toString();

myformdata.append('id', this.userid);

this.http.post('http://127.0.0.1/api/edituser.php', myformdata, options).subscribe((getstuddata: any) => {

  this.studdata = getstuddata;

  console.log(this.studdata);
  output: 

[
{
“list_id”: “2”,
“list_first_name”: “Albert”,
“list_last_name”: “Williamson”,
“list_email”: “awilliamson1@narod.ru”,
“list_country”: “China”,
“list_modified”: “2015-03-11 00:00:00”,
“list_vip”: “True”
}
]
console.log(this.studdata.list_id);
output: undefined

});

你的 studdata 接到的值是陣列還是物件? 如果是陣列,
this.studdata.list_id 當然不存在,他是存在於陣列的第一個位置,所以會是 this.studdata[0].list-id

我嘗試了,仍然不能this.studdata[0].list_id 輸出2.,是否JSON DATA 沒有儲存去studdata?
我定義了Studentinformation資料如下:
export interface Studentinformation

{

id: String;

first_name: String;

last_name: String;

email: String;

country: String;

modified: String;

vip: boolean;

}

thank you very much.

console.log(this.studdata) 這個輸出的結果長什麼樣子?

console.log(this.studdata) 輸出:
[
{
“list_id”: “2”,
“list_first_name”: “Albert”,
“list_last_name”: “Williamson”,
“list_email”: “awilliamson1@narod.ru”,
“list_country”: “China”,
“list_modified”: “2015-03-11 00:00:00”,
“list_vip”: “True”
}
]

難道 php 輸出出來的是文字而不是 JSON 格式嗎? 這個你要確認一下,如果是純文字,那你還要將文字轉換成JSON 物件才能操作,這要看你 API 吐出來的格式是什麼了。

我在PHP 裏輸出了以下JSON 資料:
[{list_id: “2”, list_first_name: “Albert”, list_last_name: “Williamson”,…}]
0: {list_id: “2”, list_first_name: “Albert”, list_last_name: “Williamson”,…}

它應該不是純文字

如果是陣列,那就是陣列操作而已,沒什麼特別技巧

但是我在程式裏打console.log(this.estuddata[0]);
它輸出: “[”
這樣是否它沒有儲存資料在object 裏?

那表示 api 回傳給你的是文字而不是 json (angular 會自動將 json 格式的資料轉換成物件類型)

但我在PHP 檢查了,它輸出給我是JSON格式。

你用 postman 打看看 API. 這邊已經跟程式碼沒有關係了,而是對於 API 基本概念的理解

1個讚

原來POST 傳入API JSON 去angular 會變成文字,要在program 裏加JSON.parse,將文字變成JSON 資料就可以了。
thank you very much.

php 端也可以在header中加入content-type來表明內容是json喔

1個讚