使用Symfony2 FosRestBundle和NelmioCorsBundle发出Ajax发布请求

时间:2015-03-16 04:47:36

标签: ajax json symfony cors fosrestbundle

我正在开发一个API,我希望它能够在客户端使用ajax请求。我也在使用Nelmio Cors和FOS Rest。

AJAX GET正常工作。 AJAX POST将此错误抛回给我(我正在使用jQuery btw进行测试):

...
exception: [{message: "Invalid json message received",…}]
  0: {message: "Invalid json message received",…}
    class: "Symfony\Component\HttpKernel\Exception\BadRequestHttpException"
    message: "Invalid json message received"
...

我的nelmio cors配置是这样的:

nelmio_cors:
    defaults:
        allow_credentials: true
        allow_origin: []
        allow_headers: []
        allow_methods: []
        expose_headers: []
        max_age: 0
        hosts: []
        origin_regex: false
    paths:
       '^/api/':
           allow_origin: ['*']
           allow_headers: ['*']
           allow_methods: ['POST', 'PUT', 'GET', 'DELETE','OPTIONS']
           max_age: 3600

我的请求在正文中发送儿子数据,这是:

$.ajax({
  url:"http://127.0.0.1:8000/api/agents",
  type:"POST",
  data:{name: "asdf"},
  contentType:"application/json",
  dataType:"json",
  success: function(a){
    console.log(a);
  }
});

如果我通过http客户端执行此请求,我的网络服务工作正常。

1 个答案:

答案 0 :(得分:1)

您请求中的json无效。

替换

data:{name: "asdf"},

通过

data:{"name": "asdf"},

然后

$.ajax({
    url:"http://127.0.0.1:8000/api/agents",
    type:"POST",
    **data:{"name": "asdf"},**
    contentType:"application/json",
    dataType:"json",
    success: function(a){
       console.log(a);
    }
});