微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用jquery来操作查询字符串

我有一个选择下拉列表,其id映射到值.
在onChange事件中,我想重定向到相同的url,但是在查询字符串中附加了“id = value”.

如何检查此’id’选项是否已存在于查询字符串中(我不想要多个值)并根据需要替换/追加.

我如何检查’?’已经在查询字符串中,如果不是,则附加到url.

使用jquery一个简单的方法吗?

对于$().ajax(url,{options})调用,它必须在引擎盖下做类似的事情.
我希望我可以做$().redirect(url,{id:$(this).val()})或者其他.

提前致谢.

注意:此页面可能会或可能不会传入一些不同的查询选项(在其他表单选项上设置认值),因此无法替换整个查询字符串.

<html>
<head><script type="text/javascript" src="/jquery-1.3.2.min.js"></script></head>
<body>
  <script>
    $(function(){                                                                                                                                         
        $('#selector').change(function(){                                                                                                                 
            // problem if 'id' option already exists
            var url = location.href + '?;id=' + $(this).val();                                                                                            
            location.assign( url );
        });                                                                                                                                               
    });                                                                                                                                                   
  </script>

  <a href="#" onclick="location.assign( location.pathname )">reset</a>                                                                                      
  <form>                                                                                                                                                    
    <select id='selector' name='id'>                                                                                                                      
        <option value='1'>one</option>                                                                                                                    
        <option value='2'>two</option>                                                                                                                    
        <option value='3'>three</option>                                                                                                                  
    </select>                                                                                                                                             
  </form>
</body>
</html>

解决方法

我最终使用RegExp匹配来覆盖选项.
jQuery.param接受一个哈希并将其序列化为query_string
但它没有提供反转(分解query_string).
// put function into jQuery namespace
jQuery.redirect = function(url,params) {

    url = url || window.location.href || '';
    url =  url.match(/\?/) ? url : url + '?';

    for ( var key in params ) {
        var re = RegExp( ';?' + key + '=?[^&;]*','g' );
        url = url.replace( re,'');
        url += ';' + key + '=' + params[key]; 
    }  
    // cleanup url 
    url = url.replace(/[;&]$/,'');
    url = url.replace(/\?[;&]/,'?'); 
    url = url.replace(/[;&]{2}/g,';');
    // $(location).attr('href',url);
    window.location.replace( url ); 
};

然后在HTML中

$('#selector').change(function(){ 
   $.redirect( location.href,{ id : $(this).val() })
})

感谢所有回复的人.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐