<input type="button" value="Delete" data-url="{{ path('NickAlertBundle_delete') }}" onclick="delete_alert( {{ alert[0].id }} )"/>
因此,当单击此按钮时,将调用javascript函数。
function delete_alert(id){
var answer = confirm("Confirm delete");
if (answer){
$.ajax({
type: "POST",
url: $(this).attr('data-url'),
data: {row: id},
success: function(data) {
if(data){
var splitdata = data.split(":");
if(splitdata[0]=="Deleted"){
var id = splitdata[1];
alert("Your alert has been deleted");
}else{
alert(data);
}
}else{
alert("Unknown Error!");
}
},
error:function(){
alert("Please try again!");
}
});
}
这样调用我的删除路由,并且应该传递要删除的数据行的id。我的路线目前是这样的
NickAlertBundle_delete:
pattern: /view-alerts
defaults: { _controller: NickAlertBundle:Alert:delete }
requirements:
_method: POST
我有与view-alerts相同的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缺失 尼克\ AlertBundle \实体\ AvailabilityAlert
如何通过我的工作方式(通过ajax请求?)获取我的控制器的ID?
由于
答案 0 :(得分:1)
你有没有尝试过:
if($request->isXmlHttpRequest())
{
$id = (int)$request->request->get('row');
}
而不是:
$id = $request->get('id');