2016-12-14 5 views
0

Так вот мой HTTP код:Angular2 Http протокол не может отправлять правильно

let headers = new Headers ({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 
    if (body == null) 
    { 
     body = {title: "hi", search: "person"}; 
    } 
    console.log('body: ' + JSON.stringify(body)); 

    return this.http.post('app/php/check.php', body, options) 
     .toPromise() 
     .then(response => response.text()) 
     .catch(this.handleError); 

Я уверен, если сервер правильно получать данные, но я уверен, что это что-то отправляет как я могу видеть:

[ 
    { 
    "select": "title", 
    "search": "person" 
    } 
] 

с firebug.


В моем файле PHP все, что я делаю это print_r($_REQUEST), однако все это возвращает это пустой массив.

Есть ли что-нибудь, что я делаю неправильно?

Бонус вопрос: Есть ли какие-либо другие функции извлечения данных, кроме .json() и .text() для ответов?



Update:

Интересно, если я использую URL app/php/check.php?fruit=apple есть ответ. Кто-нибудь знает несоответствие?

+0

Вы возвращаетесь ответ от 'check.php', или просто распечатать запрос? –

+0

@EamonnMcEvoy просто печать. Так вы получаете ответы от php-скрипта? –

ответ

2

Сервер должен получать данные, находящиеся в переменной вашего тела.

Вот пример того, как вы должны извлекать выходные данные из своей функции. В примере используется вывод JSON, хотя из-за тестового API, который я использую для данных post. Строка будет одинаковой, просто измените раздел возврата.

ngOnInit() { 
     this.postRquest().then(results => this.response = results); 
} 

postRquest(body) { 
    let headers = new Headers ({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
    let options = new RequestOptions({ headers: headers }); 
    if (body == null) 
    { 
     body = {title: "hi", search: "person"}; 
    } 
    console.log('body: ' + JSON.stringify(body)); 

    return this.http.post('app/php/check.php', body, options) 
     .toPromise() 
     .then((response) => return response.json()) 
     .catch(error => { 
      console.log(error); 
     }); 
    } 

Убедитесь, что ваш заголовок типа содержимого является применение/х-WWW-форм-urlencoded

Plunker пример: https://embed.plnkr.co/UDYDp0gXx5H9OhmMKicL/

+0

мой код не похож на ваш ... и все же, когда я просто 'echo 'hi';' он возвращает мне, поэтому он просто не получает сообщений или что-то в этом роде. Хорошо, я буду продолжать пробовать вещи. –

+0

Когда я использую $ .ajax, я обязательно получаю данные назад –

+0

Можете ли вы открыть инструменты разработчика и посмотреть вкладку сети и посмотреть, что возвращается для этого запроса Ajax с http. –