2016-10-13 63 views
0

通過使用PHP我呼應從SQL Server響應:從PHP接收JSON到角2的HttpModule

echo json_encode($total); 

就像一個測試,我贊同之前,我運行error_log中(json_encode($總計))其中輸出的對象爲:

[{"address":"Mitchell Hwy", 
    "description":"Nyngan Eastbound STC", 
    "site_name":"T0242", 
    "heading":"East", 
    "vehicle_class":"B double", 
    "vehicle_class_id":"10", 
    "avg_speed":"69.27", 
    "volume":"46"}] 

這正是我想在Angular 2的http響應中收到的內容。我的角2的代碼是:

let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 

    return this.http.post(url, sentArray,{ 
     headers: headers 
    }).subscribe(
     result => returnedJSON = result, 
    () => console.log("Failed..."), 
    () => console.log(returnedJSON) 
    ); 

這在控制檯中,該響應消息「身體」是,我想返回的PHP代碼打印「響應」對象。

Response {_body: "[{"address":"Mitchell Hwy","description":"Nyngan E…_id":"Total","avg_speed":"67.35","volume":"262"}]", 
status: 200, 
ok: true, 
statusText: "OK", 
headers: Headers…} 

我的問題是: 爲什麼我會收到一個完整的響應對象?這是因爲我使用POST HTTP請求 - 還是隻是Angular 2接收響應的方式?我如何隔離響應主體?

我假設我在PHP中正確地做了所有事情,因爲我記錄了我想要的確切輸出。我認爲這與我的Angular 2代碼有關...

+0

在'subscribe'回調中使用'response.json()'可以做到這一點。 –

+0

Harry Ninh - 謝謝:) 如果您將它作爲答案發布,我將刪除我的答案並將其標記爲正確(如果您喜歡)。 – fila

+0

沒關係,改進你的工作並將其標記爲完成。我完全沒問題:) –

回答

0

我很抱歉 - 如果其他人被卡在同一點,答案很簡單。使用'.text()'隔離響應主體。我發現這個在這裏: https://angular.io/docs/ts/latest/api/http/index/Response-class.html

let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 

    return this.http.post(url, sentArray,{ 
     headers: headers 
    }).subscribe(
     result => returnedJSON = result.text(), //the '.text()' was the issue. 
    () => console.log("Failed..."), 
    () => console.log(returnedJSON) 
    ); 

編輯

哈利寧提供了一個更好的解決方案。使用'result.json()'而不是'.text()'。 'Result.json()'返回對我來說更好的對象數組。