2014-03-24 39 views
3

我想知道为什么这不起作用,我有一个AngularJS应用程序女巫发送槽AJAX数据到Symfony2应用程序。正如你所看到的,数据在我的网络控制台AngularsJS POST JSON数据到Symfony2

<?php 

namespace Supbox\CloudBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\JsonResponse; 
class FolderController extends Controller 
{ 
    public function createAction(){ 
     $post = $this->getRequest()->request; 
     $name = $post->get("name"); 
     $folder = $post->get("folder"); 
     var_dump($post); 
     die; 
    } 
} 

AngularJS代码

$http({ 
      method: 'POST', 
      url: route.folder.create, 
      data: { 
       folder: $scope.id, 
       name: name 
      } 
     }) 

歌剧网络控制台输出

Request URL:http://localhost/supbox/web/box/folder/create 
Request Method:POST 
Status Code:200 OK 
Request Headersview source 
Accept-Encoding:gzip,deflate,lzma,sdch 
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 
Connection:keep-alive 
Content-Length:25 
Content-Type:application/json;charset=UTF-8 
Host:localhost 
Origin:http://localhost 
Referer:http://localhost/supbox/web/box/ 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36 OPR/20.0.1387.82 
Request Payloadview source 
{folder:1, name:Ang} 
Response Headersview source 
Connection:Keep-Alive 
Content-Length:431 
Content-Type:text/html 
Date:Mon, 24 Mar 2014 13:25:53 GMT 
Keep-Alive:timeout=5, max=100 
Server:Apache/2.4.4 (Win64) OpenSSL/1.0.1d PHP/5.4.12 
X-Powered-By:PHP/5.4.12 
+3

'var_dump($ post)'display是什么? – DOZ

+1

你能否展示你如何在角度方面创建帖子? – jahller

+0

$ post是ParameterBag的一个实例,它是空的... http://img15.hostingpics.net/pics/883753Sanstitre.png –

回答

4

发送如果(角JS)通过标题为post数据JSON你需要像这样改变你的代码:

public function createAction(){ 
    $post = $this->getRequest()->getContent(); 
    $post = json_decode($post); 
    $name = $post->name; 
    $folder = $post->folder; 
    var_dump($post); 
    var_dump($name); // null 
    var_dump($folder); // null 
    die; 
} 
+0

它的工作原理...罚款...但我没有得到原因。为什么我必须在POST中执行类似的操作,而不需要执行Get操作。欢迎任何解释:) –

+0

因为Angular JS不会在普通帖子中发布数据;它会将它们更改为JSON,然后通过标题内容传递发布数据。这是Angular JS的本质(以防万一这个作品标志为绿色;-)) – Javad

+0

好的,有没有办法改变这种行为? (对于使用jQuery POST方式的角度) –