Laravel 4: ответ JSON выводится в теле html

У меня есть находчивый контроллер, и я хотел бы добавить еще один маршрут для моего ответа API. Но кажется, что когда я набираю в своем браузере localhost/mylaravel/api/updates, кажется, что вывод не относится к типу содержимого application/json. Я просмотрел его в firebug и убедился, что JSON добавляются в тело html, обернутое тегом ‹pre›. Как решить такую ​​проблему?

маршруты.php

 Route::group(array('prefix' => 'api'), function() {

        Route::get('updates', 'PluginsController@updatesNotification');

});

Route::resource('plugins', 'PluginsController');

ПлагиныКонтроллер.php

class PluginsController extends BaseController {
public function index() { ... }
public function create() { ... }
...
...
...
public function updatesNotification() {
        return Response::json(array('name' => 'Steve', 'state' => 'CA'));
    }

person gwinh    schedule 27.05.2013    source источник


Ответы (2)


Я думаю, именно так JSON, отправленный как application/json, отображается в Firefox. Response::json должен правильно отправлять его как application/json. В Firefox я могу определить разницу по шрифту. Попробуйте создать test.html и поместить в него только JSON, и вы увидите, что это обычный шрифт без <pre> вокруг него.

person Matt Browne    schedule 27.05.2013

JSON <pre> tag is displayed in Firebug only.

You can direclty use the output object of Response::json()  to manipulate and render data. 

У меня это работало нормально, когда я возвращал ответ AJAX, используя метод Response::json() для построения графиков с использованием библиотеки Jqplot.

My code is 

return View::make('jqplot::line')->with('data', Response::json($tdata));
person deepika jain    schedule 28.05.2013