Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery在URL中插入搜索参数_Jquery_Parameters_Search Engine - Fatal编程技术网

使用jquery在URL中插入搜索参数

使用jquery在URL中插入搜索参数,jquery,parameters,search-engine,Jquery,Parameters,Search Engine,我有一些不同的搜索参数,在不同的类别中是动态的。我的问题是,我需要使用jquery检查是否单击了复选框,然后更改URL以便插入参数 我的一个搜索参数框的HTML是: <h3>{heading}</h3> <div class="{class} {parameter} searchParam" name="class"> <ul> <li><input type="checkbox" name="{name}

我有一些不同的搜索参数,在不同的类别中是动态的。我的问题是,我需要使用jquery检查是否单击了复选框,然后更改URL以便插入参数

我的一个搜索参数框的HTML是:

<h3>{heading}</h3>
<div class="{class} {parameter} searchParam" name="class">
    <ul>
        <li><input type="checkbox" name="{name}" value="{value}" />{value}</li>
    </ul>
</div>
{heading}
  • {value}
每个参数都有“searchParam”作为类-其他参数是动态的

我需要为每个.searchParam创建一个URL部分,以便如果例如3个搜索参数已检查值(li中的输入),则URL如下所示:

这可能吗?

我是这样解决的:

$(document).ready( function() {
        var params = [];

        $(".searchParam").click(function(){
            params = [];
            $(".searchParam").each(function(index){
                var name = $(this).attr('name');
                var values = $('.'+ name +' input:checkbox:checked').map(function (){ return this.value }).get();

                if(values.length > 0){
                    params.push({'name': name, 'values': values }); 
                }           
            });

            var curUrl = $(location).attr('href');
            var newUrl = curUrl.split('/');
            var urlNumPar = newUrl.length - 1;

            var redirectURL = '';

            $(newUrl).each(function(index, val){
                if( index == urlNumPar)
                {
                } else {
                    redirectURL += val+"/";
                }
            });

            $(params).each(function(index, val){
                if(params.length > 1 && index > 0)
                {
                    redirectURL += ".";
                }
                redirectURL += val['name'] + "=" + val['values'];
            });

            window.location.href = redirectURL;
        });
    });

是否要更新当前页面URL中的搜索参数?你知道这会触发页面加载/刷新吗?大卫:是的,我想到了。我认为这是最好的方法——我可以通过ajax加载它,但我认为这可能会在页面上记录的数量方面带来一些问题。所以我决定继续重新加载页面:)你到底为什么要这样做?您可以使用
location.hash
将参数放入url栏而无需重新加载页面,但它们将出现在
之后。我想我不能使用。。与我的PHP路由有关。。但我想这样做,因为我不能添加到参数。假设它已经是:size=43,44,我勾选“45”-那么如何设置size=43,44,45?:-)这是我目前的问题