我正在开发一个之前开发的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."}
谢谢,
亚伦