如何在Symfony2控制器中返回JSON

时间:2014-02-26 17:10:26

标签: php ajax json symfony silex

我正在开发一个之前开发的PHP应用程序,并且在生产中运行良好。但是,既然我已经将代码拉下来并使用MAMP在我的本地机器上运行它,那么有些东西是行不通的。我已将我的许多问题缩小到Symfony2,v 2.2.0控制器。当我在console.log中调用调用我的控制器的ajax的输出时,我得到了JSON的纯字符串版本。如果我进入ajax并添加参数dataType: 'json',那么该字符串将变为JSON对象,我的代码工作正常。但是,如果你看一下控制器,JSON不应该是那个级别的输出吗?你能帮我理解问题所在吗?我怀疑是否与使用较新版本的PHP或类似的东西有关。

技术:
PHP版本5.5.3
Silex的
Symfony2版本2.2.0

控制器

$dashboard->post('/add-food', function(Request $request) use ($app) {
    $user = UserUtils::getUser($app, $app['session']->get('userId'));
    $data = array(
        'foodTypeId' => $request->request->get('foodTypeId'),
        'addFoodAmount' => $request->request->get('foodAmount'),
        'goal' => $user->getGoal(),        
        'people' => mround($user->getAdults() + ($user->getChildren() / 2), 1), 
    );
    $retValue = StorageUtils::updateFoodType($app, $data, 'add'); 
    $foodType = $retValue['foodType'];
    $result = array(
        'foodTypeId' => $foodType->getId(),
        'userHas' => $foodType->getUserHas(),
        'categoryPerc' => StorageUtils::updateFoodCategoryPerc($app, $foodType->getFoodCategory()->getId()),
        'categoryId' => $foodType->getFoodCategory()->getId(),
        'totalPerc' => StorageUtils::getTotalFoodPerc($app, $user->getId()),
        'successMsg' => $retValue['successMsg'],
    );

    if ($result) {
        return $app->json($result, 200, array('Content-Type' => 'application/json'));
    } else {
        return new Response('failure', 200);
    }
});

的Ajax

$.ajax({
    type: "POST",
    url: "/app/dashboard/add-food",
    contentType: "application/json",
    data: JSON.stringify(formData),
    success: function(data) {
        $(window).colorbox.close();
        updatePage(data);
    }
});

当我看到标题时,我得到以下内容:
连接:保持活力
内容类型:text / html
日期:2014年2月26日12:49:01
保持活跃:超时= 5,最大= 100
服务器:Apache / 2.2.25(Unix)mod_ssl / 2.2.25 OpenSSL / 0.9.8y DAV / 2 PHP / 5.5.3
转移编码:分块
X-Powered-By:PHP / 5.5.3

输出:
{"foodTypeId":316342,"userHas":39,"categoryPerc":74.2,"categoryId":61659,"totalPerc":11.5,"successMsg":"1 gals of Vegetable Oil has been added."}

谢谢,

亚伦

0 个答案:

没有答案