gre*_*reg 69 php ajax json symfony
我正在使用Symfony 2开发一个项目,我已经构建了一个bundle来处理我的所有数据库服务,它们传递JSON数据.
我的问题/问题:
可以发布一个直接的JSON对象吗?目前我正在欺骗我的ajax调用的正常表单帖子,json={"key":"value"}如果我不给它一个名字给对象一个名字我似乎无法从Symfony请求对象获取数据$JSON = $request->request->get('json');
我希望能够使用一个服务包来处理来自AJAX调用的数据或正常的Symfony表单.目前我正在提交提交的Symfony表单,然后使用JSON_ENCODE获取数据,我只是无法解决如何将数据发布到我期望请求数据的服务控制器.
总结一下:
我希望Symfony接受JSON post对象而不是表单.
我想使用Request/Response在控制器之间传递JSON对象
如果我说这一切都错了,请随时告诉我!
ric*_*age 134
如果要在控制器中检索已在请求正文中作为标准JSON发送的数据,则可以执行与以下类似的操作:
public function yourAction()
{
$params = array();
$content = $this->get("request")->getContent();
if (!empty($content))
{
$params = json_decode($content, true); // 2nd param to get as array
}
}
Run Code Online (Sandbox Code Playgroud)
现在$params将是一个充满JSON数据的数组.删除调用中的true参数值json_decode()以获取stdClass对象.
我编写了将内容作为数组的方法
protected function getContentAsArray(Request $request){
$content = $request->getContent();
if(empty($content)){
throw new BadRequestHttpException("Content is empty");
}
if(!Validator::isValidJsonString($content)){
throw new BadRequestHttpException("Content is not a valid json");
}
return new ArrayCollection(json_decode($content, true));
}
Run Code Online (Sandbox Code Playgroud)
我使用这种方法如下所示
$content = $this->getContentAsArray($request);
$category = new Category();
$category->setTitle($content->get('title'));
$category->setMetaTitle($content->get('meta_title'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74469 次 |
| 最近记录: |