在查询字符串中重复变量

Jef*_*eff 3 html javascript firefox jquery

我遇到了javascript和firefox 10.0.11的奇怪问题.我已经使用IE测试过,无法复制该问题.

我有一个链接到一个页面,显示有关对象的一些信息.我已使用javascript为此页面添加了其他功能.如果启用了javascript,则锚链接将重定向到javascript函数.

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

如您所见,javascript会插入带有键值的隐藏输入标记.无javascript版本工作正常,但我遇到一些与JavaScript的问题.当Comment第一次点击任何项目的按钮时,它会罚款.如果我回击然后点击任何Comment链接,页面就会显示,就像我再次点击第一个链接一样.检查后,我注意到每个后续"后退"和"点击"的网址参数都会"堆叠"

/Comment?id=1
/Comment?id=1&id=2
/Comment?id=1&id=2&id=3
Run Code Online (Sandbox Code Playgroud)

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

Col*_*een 6

这不是一个bug,它是一个功能:)

您的浏览器正在缓存该页面,因此当您返回时,您没有刷新它,您将返回原来的状态,即使用隐藏的输入字段.

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

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;
};
Run Code Online (Sandbox Code Playgroud)

  • + 1为*这不是错误,它是一个功能* (3认同)