【问题标题】:Get QueryStrings in browser url in jquery get request在 jquery get request 中获取浏览器 url 中的 QueryStrings
【发布时间】:2014-01-16 10:58:54
【问题描述】:

我想用 jquery 发送一个 get 请求,但 get 函数没有将查询字符串放在地址栏中。我尝试将 async 设置为 false,但它仍然不起作用。

$("#searchForm").submit(function (event) {
            var x = $("#category").serialize();
            $.get("Home/test", x, function (data) {               
                alert(data);
            });
            event.preventDefault();
            });

上面的代码不像普通的get请求那样将查询字符串放在地址栏中。

因此我应该在浏览器地址栏中有类似 Home/Text/?category=laptop

例如

欢迎指定我可以在地址栏中放入哪些查询字符串的任何其他解决方案。

form id="searchForm" action="@Url.Action("Index")" method="get">    

    <input type="text" name="search" id="search />
    <div id="price">
        <input type="text" id="PriceMin" name="PriceMin" />
        <input type="text" id="PriceMax" name="PriceMax" />
    </div>
    <input type="submit" value="submit"/>
</form>

作为一个例子,我不想在 url 查询字符串中

?search=volvo&PriceMin=&PriceMax=

换句话说,在获取请求时,不应将 null 的输入字段放在 url 中。

谢谢。

发现了一些东西,它的工作原理为什么我以前没想到这一点超出了我的理解

$("#searchForm").submit(function (event) {
            if ($("#PriceMin").val() == "") { $("#PriceMin").prop("disabled", true); alert("isnull");}
            });  

如果在发送表单之前输入字段是“”,我将禁用该输入字段。因此“priceMin”的查询字符串不会发送,因为该元素已禁用。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    地址栏没有变化的原因是因为当你用javascript发出AJAX请求时,这个请求是在后台发出的。 AJAX 的全部意义在于在不离开当前页面的情况下发出请求。如果您更改地址栏中的 url,则会触发重新加载整个页面。所以你想要达到的目标是不可能的。您可以使用 url 的片段部分(# 之后的部分)。您可以修改这部分 url,而不会导致浏览器离开。看看下面的文章:http://ajax.rswebanalytics.com/seo-for-ajax/#!ajax-crawlable-urls

    因此您可以拥有以下网址:

    http://example.com/Home/Text/#category=laptop
    

    为了在 javascript 中操作 url 的片段部分,您可以使用 window.location.hash 属性。请记住,这部分 url 永远不会发送到服务器。它仅用于客户端。

    就您关于空字符串的第二个问题而言,没有办法在纯 HTML 中实现这一点。您将不得不编写javascript。基本上在这里,您必须订阅表单的 .submit 事件并手动构建您将重定向到的目标 url,并排除具有空值的参数。然后使用 window.location.href 属性手动重定向到此 url。另外不要忘记通过返回 false 来取消提交的默认操作。

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 1970-01-01
      • 2010-11-18
      • 2013-08-23
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 2014-12-18
      相关资源
      最近更新 更多