Symfony2-获取正确的id以显示/{id}时出现问题


Symfony2 - Issue getting correct id to show/{id}

我有一个视图页面,它传递了我所有的活动警报。在显示的每一行上,我都有一个显示按钮,这样你就可以看到单独的警报

{% for alert in alerts %}
    <tr>
        <td>{{ alert[0].id }}</td>
        <td>{{ alert[0].alertStatus }}</td>
        <td>
            <input type="button" value="Show" data-url="{{ path('NickAlertBundle_show', {id: alert[0].id}) }}" onclick="show_alert( {{ alert[0].id }} )" id="show"/>
        </td>
    </tr>
{% endfor %}

因此,当单击该按钮时,会调用javascript函数show_alert。

function show_alert(id){
    alert(id);
    $.ajax({
        type: "POST",
        url: $("#show").attr('data-url'),
        data: {id: id},
        success: function(data) {
            if(data){
            }else{
                alert("Unknown Error!");
            }
        },
        error:function(){
            alert(id);
        }
    });
}

现在,我在该函数的顶部执行一个警报,该警报总是显示正确的id。我认为问题出在ajax调用的url部分。它调用的数据url应该是正确的。这就是所谓的

NickAlertBundle_show:
    pattern:  /show-alert/{id}
    defaults: { _controller: NickAlertBundle:Alert:show }
    requirements:
       _method:  GET|POST
       id:  'd+

因此,这应该调用控制器动作

public function showAction(Request $request, $id)
{
    var_dump($id);
    if($request->isXmlHttpRequest())
    {
        $id = (int)$request->request->get('id');
    }
    return new JsonResponse('test');
}

不过,此时,此操作中的var_dump始终输出上次添加的警报的id,而不是所选警报的id。当我显示警报时,它总是显示最新添加的警报。

那么,是什么导致它获得最新的警报id而不是所选的id呢?正如我所说,它最初会得到正确的id,但在某个时候会发生变化。

感谢

您不应该声明重复的id,如模板中的id="show",最好使用class或像id="show_1 ... n" 一样声明您的id