繁体   English   中英

如何在运行时使用jQuery附加查询参数

[英]How to append query parameter at runtime using jQuery

通过JavaScript,我向页面URL附加了一个查询参数,并且遇到了一种奇怪的行为。

<div>
    <a href="Default3.aspx?id=2">Click me</a>
</div>


$(function () {
    window.location.href = window.location.href + "&q=" + "aa";
});

现在,我将&q=aa附加到default3.aspx中,并且在此页面中&q=aa不断添加,导致URL变为:

 http://localhost:1112/WebSite2/Default3.aspx?id=2&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa

有人会说像<a href="Default3.aspx?id=2&q=aa">Click me</a>一样传递它,但是我做不到。 该查询参数的值实际上是default3.aspx中的HTML元素的值。 我必须在运行时添加它。

有什么方法可以做到这一点?

发生这种情况的原因是,如果更改window.location值,浏览器将执行重定向到新位置的操作,正如您在document.ready中所做的那样。准备好这种情况将无限期发生。

执行此重定向之前,您可能需要检查当前url是否已包含这些参数。

$(function () {
    var suffix = '&q=aa';
    var currentUrl = window.location.href;
    if (currentUrl.match(suffix + '$') != suffix) {
        window.location.href = window.location.href + suffix;
    }
});

备注:为此目的,使用javascript似乎不是一个好主意。 我将在服务器端执行此重定向,这将更加可靠。 在您的default.aspx页面中:

protected void Page_Load(object sender, EventArgs e) 
{
    var q = Request["q"];
    if (string.IsNullOrEmpty(q))
    {
        // q parameter has not been set => redirect
        Response.Redirect("/default.aspx?q=aa");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM