【问题标题】:removing url params with javascript [duplicate]用javascript删除url参数[重复]
【发布时间】:2013-12-14 04:17:00
【问题描述】:

我有以下 ajaxError

$(document).ajaxError(function (e, xhr, settings) {
   if ( settings.url == "/users/sign_in" ) {
        if (xhr.status == 401) {
           $('#notice_signin').html(xhr.responseText);
           $('#notice_signin').addClass("alert").addClass("alert-error");
        }
      }
});

问题是 settings.url 具有不同的参数,例如语言环境、来源等。所以 settings.url 永远不会匹配 /users/sign_in 而是 /users/sign_in?lang=fr&source=fb

剥离参数的简单方法是什么?

【问题讨论】:

  • 剥离的目的是什么?
  • 这样 settings.url 将是 /users/sign_in 而不是 /users/sign_in?lang=fr

标签: javascript regex


【解决方案1】:

如果你只需要它来检查 url 你可以使用indexOf 方法

if ( settings.url.toLowerCase().indexOf("/users/sign_in")>-1)
....

否则如果你想让url不带参数供以后使用,你可以使用split方法

var url = settings.url.split('?')[0];

【讨论】:

    【解决方案2】:

    你可以试试split

    var urlString = '/users/sign_in?lang=fr&source=fb';
    var urlArray =  urlString.split('?');
    alert(urlArray[0]);
    var settingsurl = urlArray[0];
    
    
    if ( settings.url == "/users/sign_in" ) {
           ....
    }
    

    【讨论】:

      【解决方案3】:
      if (settings.url.split('?')[0] == '/users/sign_in') {
         ...
      }
      

      请注意,这不包括错误处理,以防 settings.url 恰好是 null

      附带说明,如果 '/users/sign_in' 是当前页面的路径,您可以改用 window.location.pathname 而不是硬编码该值。

      【讨论】:

        【解决方案4】:

        或者其他选项可以使用substring

        if ( settings.url.substr(0,settings.url.indexOf("?")) == "/users/sign_in" ) 
        

        【讨论】:

          猜你喜欢
          • 2013-06-01
          • 1970-01-01
          • 2016-07-24
          • 1970-01-01
          • 2011-12-19
          • 2013-11-21
          • 1970-01-01
          • 2022-01-10
          • 1970-01-01
          相关资源
          最近更新 更多