Почему бы просто не использовать объект ответа Слима? (также... зачем выходить?)
$dataAry = // Some data array
$response = $app->response();
$response['Content-Type'] = 'application/json';
$response['X-Powered-By'] = 'Potato Energy';
$response->status(200);
// etc.
$response->body(json_encode($dataAry));
// Or echo json_encode($dataAry)
Позвольте мне в предисловии сказать, что я все еще считаю себя нубом, поэтому, если я делаю ошибки, поправьте меня, чтобы я мог учиться. Но я играл с похожей проблемой/вопросом и подумал, что могу добавить 2 цента и заархивировать еще немного обсуждения по этому вопросу. Чем больше информации о Slim on Stack, тем лучше.
По сути, я играл с тем же и заметил, что вы используете exit; Сначала я использовал выход еще и потому, что эхо включало кучу HTML и искажало то, что возвращалось в мой вызов AJAX. Когда я использовал выход, он аккуратно вырезал HTML, но затем объект ответа Slim не менял заголовки ответа, как я определил (см. код выше).
Я понял, что это не то, как Слим был разработан для работы. Используйте эхо, а не выход. ПРИМЕЧАНИЕ. Тонкий документ:
Всякий раз, когда вы используете содержимое echo() из обратного вызова маршрута, содержимое, переданное echo(), захватывается > в буфере вывода и позже добавляется к телу ответа, прежде чем ответ HTTP будет > возвращен клиенту.
Это удобно, но я не смог повторить. То, что я испортил, было большей проблемой. Отделение содержания от поведения. Если вы похожи на меня, вы настраиваете одностраничное приложение, где этот код в основном находится на index.php. Есть исходный html, который мне нужно было загрузить, поэтому я включил его на эту страницу. Что мне нужно было сделать, так это создать более чистое разделение. Моя маршрутизация была правильно настроена, и поэтому, когда люди ПОЛУЧАЮТ '/', Slim_Views (см. Develop Rel.) возвращает мне обработанный шаблон html и js. Великолепно!
Теперь у меня есть все инструменты Слима, и мой код намного чище, раздельнее, управляемее и более совместим с протоколами http. Думаю, для этого и нужны фреймворки. :-)
ПРИМЕЧАНИЕ. Я не говорю, что все это произошло с вашей стороны, но я подумал, что вопрос и ваша установка кажутся очень похожими. Это может помочь другому новичку, который идет по тому же пути.
ОБНОВЛЕНИЕ: как упоминает @alttag, этот ответ устаревает (Slim 2)
Для Slim3 см. ответ ниже или см. эту страницу в документации
person
jmk2142
schedule
31.01.2012