3

我在使用 javascript 和 firefox 10.0.11 时遇到了一个奇怪的问题。我已经用 IE 进行了测试,但无法复制该问题。

我有一个链接,该链接指向显示有关对象的一些信息的页面。我使用 javascript 向此页面添加了附加功能。如果启用了 javascript,则锚链接将被重定向到 javascript 函数。

<a href="/Comment?id=1186281" onclick="return CommentSubmit(1186281)">Comment</a>
function CommentSubmit(id) {
    $("#DynForm").append("<input type='hidden' name='id' value='" + id + "' />");
    $("#DynForm").attr("action", "/Comment/Index");
    $("#DynForm").submit();
    return false;
};

如您所见,javascript 插入了一个带有键值的隐藏输入标签。无 javascript 版本工作正常,但我遇到了 javascript 的一些问题。第一次单击Comment任何项​​目的按钮时,它可以正常工作。如果我回击然后单击任何Comment链接,页面就会显示,就好像我再次单击了第一个链接一样。经过检查,我注意到 url 参数对于每个后续的“返回”和“点击”都被“堆叠”了

/Comment?id=1
/Comment?id=1&id=2
/Comment?id=1&id=2&id=3

如果我再次导航到该页面(不返回),第一个链接将再次起作用,然后开始这种奇怪的行为。单击几个链接后查看页面源,我看不到hidden会添加这些附加参数的新字段。这是一个已知的问题?我该如何进一步调试并修复它?

4

1 回答 1

6

这不是错误,这是一个功能:)

您的浏览器正在缓存页面,因此当您返回时,您并没有刷新它,而是按原样返回,即使用隐藏的输入字段。

您需要做的就是在再次附加之前删除该字段。

function CommentSubmit(id) {
    $("input[name=id]").remove();
    $("#DynForm").append("<input type='hidden' name='id' value='" + id + "' />");
    $("#DynForm").attr("action", "/Comment/Index");
    $("#DynForm").submit();
    return false;
};
于 2013-01-30T23:34:45.987 回答