22

我发送这样的短信

html 标记

<textarea id="request" cols="20" rows="4"></textarea>

javascript代码

var data = {request : $('#request').val()};

$.ajax({
    type: "POST",
    url: "{{ path('acme_member_msgPost') }}",
    data: data,
    success: function (data, dataType) {
        alert(data);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert('Error : ' + errorThrown);
    }
});

symfony2 控制器代码

$request = $this->container->get('request');
$text = $request->request->get('data');

但是$text是空的...

我已经通过 firefox http request tester 尝试了正常的发布请求(不是 Ajax)。

/app_dev.php/member/msgPost

控制器工作并$text具有价值。

所以我认为php代码还可以,但是Ajax方面存在问题

'success:function' 就像成功一样被调用。

如何获取 javascript 数据结构的内容?

4

3 回答 3

30

首先,您不需要访问控制器中的容器,因为它已经实现ContainerAware

所以基本上你的代码在你的Controller.php

public function ajaxAction(Request $request)
{
    $data = $request->request->get('request');
}

console.log(data)此外,通过在应用程序的 JS 中使用,确保您发送的数据不为空。

最后是您问题的答案:您没有使用正确的变量,您需要访问的值,$('#request').val()但您将其存储在一个request变量中,并且您data在控制器中使用了一个变量名。

考虑更改变量的名称,因为它会造成混淆。

于 2013-09-16T12:09:07.757 回答
24

如果您以 JSON 格式(而不是 urlencoded 格式)发送数据,则需要直接访问请求正文:

$data = json_decode($request->getContent());
于 2013-09-16T16:03:34.670 回答
3

获取值时你做错了,你必须使用:

$data = $request->request->get('request');

因为请求是您的参数的名称。

于 2013-09-16T16:42:57.260 回答