2016-10-13 14 views
0

Использование PHP Я гулкой ответ от SQL Server с помощью:Получение JSON из PHP с угловыми 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"}] 

Это именно то, что я хочу получить в ответном ответе Углового 2. Мои Угловые 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-запрос - или просто так, как угловой 2 получает ответ? Как изолировать только тело ответа?

Я предполагаю, что все правильно выполняю в PHP, так как я регистрирую точный результат, который я хочу. Я предполагаю, что это как-то связано с моим кодом Angular 2 ...

+0

с использованием 'response.json()' в обратном вызове 'subscribe' будет делать трюк. –

+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) 
    ); 

EDIT

Гарри Нинь обеспечил лучшее решение. Использование 'result.json()' вместо '.text()'. 'Result.json()' возвращает массив объектов, который был лучше для меня.