[OLVED。从POST ajax请求Symfony2获取数据时出错

时间:2016-09-30 11:52:31

标签: javascript php jquery ajax symfony

今天是一个艰难的夜晚和哈哈哈。我试图通过data symfony2请求获得AJAX 'POST'null

实际上我想发送一个数组并在控制器中获取它但我收到的错误就像这个变量$('#ordenar').click(function(){ var $children = $('#sortable').children(); var numElementos = $children.length; var socialSorted = []; for(var i=0; i<numElementos; i++){ socialSorted.push($children[i].id); } $.ajax({ url: ' {{ path('admin_update_social_position') }} ', datos: socialSorted, method: 'POST' }).done(function (data) { if(data.type == 'OK'){ window.location.reload(); } if(data.type == 'ERROR'){ $('#error-message').slideDown(); } }); }); 一样。我想我试图以正确的方式得到它但是...... 让我们看看吧!

这是JS AJAX请愿书,我正在获取ul#sortable.children()命令以在dataBase上更新它,所以我发送了一个包含位置和id的数组。

  

示例:[&#34; 1&#34;,&#34; 3&#34;,&#34; 2&#34;]。因此,db中id = 1的对象将位于位置1.具有id = 3的元素将位于位置2中,而具有id = 2的元素将位于位置3中。 / p>

/**
     * @Route("/admin/update/order/social", name="admin_update_social_position")
     */
    public function orderSocial(Request $request)
    {
        $em             = $this->getDoctrine()->getManager();

        $socialSorted   = $request->request->get('socialSorted');
        $numElementos   = count($socialSorted);

        for($i=0; $i<$numElementos; $i++)
        {
            $social = $em->getRepository('AppBundle:Social')->findById($socialSorted[$i]);
            $social->setPosition($i+1);
            $em->persist($social);
        }

        if (empty($socialSorted)) {
            $this->sendResponseStatus('ERROR');

            return new JSONResponse($this->getData());
        }

        $em->flush();

        $this->sendResponseStatus('OK');

        // Generamos los datos para la respuesta ajax
        return new JSONResponse($this->getData());
    }

这是控制器

JSON

我尝试了很多方法...发送数组,发送带有数组的controller以及从$social = $em->getRepository('AppBundle:Social')->findById($socialSorted[$i]); $social->setPosition($i+1); $em->persist($social); 获取数据的不同方式...任何建议/解决方案?

感谢大家

编辑:错误在行

$social = $em->getRepository('AppBundle:Social')->findById($socialSorted[$i]);
                $social[0]->setPosition($i+1);
                $em->persist($social[0]);

因为在findBy之后它会返回你和arrayCollection然后我应该这样做:

uint_32_t ip_fragment_hash(uint16_t ip_id, uint8_t ip_proto, uint32_t ip_src, uint32_t ip_dst)
{
  return (ip_id << 16 | ip_proto) ^ ip_src ^ ip_dst;
}

2 个答案:

答案 0 :(得分:1)

试试这个:

        $.ajax({
            url: ' {{ path('admin_update_social_position') }} ',
            data: {
                socialSorted: socialSorted,
            },
            method: 'POST'
        }).done(function (data) {
            if(data.type == 'OK'){
                window.location.reload();
            }
            if(data.type == 'ERROR'){
                $('#error-message').slideDown();
            }
        });

您需要将数据作为数组发送。您在请求中要求socialSorted密钥,但实际上您并未发送

答案 1 :(得分:-1)

这里的问题在于你期望从AJAX获得socialSorted变量但从未得到它:

在控制器中: $socialSorted = $request->get('socialSorted');

但在AJAX电话中.. datos: socialSorted,

在您的控制器中,只需将其读取即可... $socialSorted = $request->get('datos');或将AJAX调用更改为socialSorted: socialSorted