Symfony Ajax,将数据阵列传输到控制器

时间:2017-09-25 13:46:28

标签: javascript php arrays ajax symfony

我正在尝试使用Ajax将数组从我的twig文件传输到另一个控制器。

我的Ajax代码:     

    $(window).scroll(function () {
        if($(window).scrollTop() + $(window).height()>= $(document).height()){
            getmoredata();
        }

    })

    var page = 1;

    function getmoredata(array_data_file) {
        var array_data_file = { {{ announces }} } ;
        var theurl = '{{ path('announce_page', {'id': "id", 'game': game}) }}'; 
        theurl = theurl.replace("id", page);
        $.ajax({
            type: "GET",
            data: {data_array:array_data_file},
            url: theurl,
            dataType: "json",
            cache: false,
            success: function (response) {
                    $("#content").append(response.classifiedList);
                    page = page + 1;
                    $('#spinner').hide();
                    console.log(response);
            },
            error: function (response) {
                console.log(response);
            }
        });
    }

</script>

控制器代码:

    public function pageAction(Request $request, $id, $game)
{
    $em = $this->getDoctrine()->getManager();
    //$announces = $em->getRepository('PlatformBundle:Announce')->byGame($game);
    $announces = $request->request->get('data_array');
    $list = $this->renderView('announce/result.html.twig', array(
        'announces' => $announces,
        'game' => $game
    ));

    $response = new JsonResponse();
    $response->setData(array('classifiedList' => $list));
    return $response;

}

关于我的代码的两个问题:

首先是关于获取一个javascript变量,我的实体宣布谁包含了很多东西。

var array_data_file = { {{ announces }} } ;

这不行,所以我尝试了类似的东西

var array_data_file ={{ announces|json_encode() }};

但是当我发出警报时(array_data_file); 我有类似的东西:

  

object Object],[object Object],[object Object],[object Object],[object   对象],[对象对象],[对象对象],[对象对象],[对象   对象],[对象对象],[对象对象],[对象对象]

第二件事,我的控制器总是有一个变量NULL

$announces = $request->request->get('data_array');

此代码适用于在我的页面中发布无限通知的无限滚动系统。我想从我的索引页面传递我的宣布,因为没有像这样在数据库中进行新的研究:

$announces = $em->getRepository('PlatformBundle:Announce')->byUser($user);

任何解决方案?

谢谢大家

编辑:

我几乎完成了解决我的问题。

我已安装 现在我可以使用此命令使用json进行变量格式。

var contactsArray = "{{ announces|serialize('json') }}";

现在我的变量包含一个很长的字符串字符串。

我已将“GET”类型更改为“POST”,因为我的网址太长了。

现在回到我的控制器,我从POST获取变量

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

但它仍然是一个很长的字符串,我试着用这个回到我的实体:

$serializer = $this->container->get('jms_serializer');
$announces = $serializer->deserialize($data, 'Wolk\PlatformBundle\Entity\Announce', 'json');

但我有这样的错误

"Could not decode JSON, syntax error - malformed JSON."

问题是,我读了一些帖子,他们说要插入我的实体的每个变量

  
      
  • @JMS \串行\注释\类型( “串”)
  •   

但是它太长了,我从宣布x /

中获得了很多变量和实体

我在这里

0 个答案:

没有答案