Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Symfony2-获取从路由到控制器的ID_Javascript_Ajax_Symfony - Fatal编程技术网

Javascript Symfony2-获取从路由到控制器的ID

Javascript Symfony2-获取从路由到控制器的ID,javascript,ajax,symfony,Javascript,Ajax,Symfony,解决问题没什么麻烦。我有一个显示我的数据的/查看警报页面。对于每一行数据,我都提供了一个删除选项 <input type="button" value="Delete" data-url="{{ path('NickAlertBundle_delete') }}" onclick="delete_alert( {{ alert[0].id }} )"/> 因此,这将调用我的删除路由,并应传递要删除的数据行的id。我的路线目前是这样的 NickAlertBundle_delete:

解决问题没什么麻烦。我有一个显示我的数据的/查看警报页面。对于每一行数据,我都提供了一个删除选项

<input type="button" value="Delete" data-url="{{ path('NickAlertBundle_delete') }}" onclick="delete_alert( {{ alert[0].id }} )"/>
因此,这将调用我的删除路由,并应传递要删除的数据行的id。我的路线目前是这样的

NickAlertBundle_delete:
    pattern:  /view-alerts
    defaults: { _controller: NickAlertBundle:Alert:delete }
    requirements:
       _method:  POST
我的url模式与查看警报相同,因为当他们从该页面删除警报时,我不希望他们重定向到其他页面

因此,现在我正在尝试访问控制器中的id,以便删除警报。目前我正在努力

public function deleteAction(Request $request)
{
        $id = $request->get('id');

        $em = $this->getDoctrine()->getManager();
        $alert = $em->getRepository('NickAlertBundle:AvailabilityAlert')->find($id);

        if (!$alert) {
            throw $this->createNotFoundException('Alert not found');
        }

        $alert->setIsDeleted(true);
        $alert->setAlertStatus('Inactive');
        $em->flush();

        return new JsonResponse('Deleted');
}
我当前收到的错误是

的查询缺少标识符id Nick\AlertBundle\Entity\AvailabilityAlert

如何通过我的操作方式(通过ajax请求)将id发送给我的控制器

谢谢

您是否尝试过:

    if($request->isXmlHttpRequest())
                {
                    $id = (int)$request->request->get('row');
    }
而不是:

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

当请求已经传递到控制器时,他为什么要从容器中提取请求?我同意,既然参数名为“row”,那么使用row比id更有意义。这是一个好问题。只是我有使用容器的习惯。你说得对,我编辑过。
$id = $request->get('id');