构建查询字符串GET变量动态

时间:2016-05-14 11:55:56

标签: javascript php jquery laravel

我在水下面,使用Laravel我有一个搜索页面,其中ajax调用url并通过包含get vars ($(this).attr('href');的html链接更新html for filter通过ajax发送的?var=test返回过滤结果。作为ajax,我不会使用history.replaceState来更新该网址。

现在我的问题是,链接显示为按钮(使用BS) - 所以我的链接href将包含?thisbuttonvar=whatever但如果get var已经存在则链接href不应包含?thisbuttonvar=whatever它应该将其删除

我已经创建了一个函数来尝试处理如下(抱歉,我无法正确粘贴):

function href_append_query($param) {

    parse_str($_SERVER["QUERY_STRING"], $query_array);
    if (array_key_exists(current(array_keys($param)), $query_array))
    {
        $key = current(array_keys($param));

        if ($param[$key] == $query_array[$key])
        {
            unset($query_array[$key]);
        }           
    }
    else
    {
        $query_array = $query_array + $param;
    }

    $query = http_build_query($query_array);

    return '?' . $query; }

这个问题是我做的时候

    @foreach ($category->subCategories()->get() as $sub_category)
                <li><a class="search-filter" href=<?=href_append_query(['sub_category' => $sub_category->sub_category_url])?>>{!! $sub_category->sub_category !!}</a></li>

它适用于第一个链接,但我的所有其他href的内容都是相同的(与第一个进入该功能的内容相同)

任何人都可以协助让这个功能发挥作用,因此foreach链接具有适当的href或完全不同的&#34;更容易&#34;所有在一起的方式:)

我的jQuery,如果它有助于描绘出更好的画面

$(document).on("click", '.search-filter', function(e) {

    e.preventDefault(); 

    $('#spinner-modal').modal('show');
    $('#spinner-modal p').html('<b>Searching,</b> please wait...<br />');

    query = $(this).attr('href');
    history.replaceState(null, null, query);

    $.ajax({
        type: "GET",
        url : query,            
        success : function(data, status){ 

            $('#job-results').html(data);
            $('#spinner-modal').modal('hide');   

        },
        error : function(status){
            console.log(status);
        },
    });  

});

0 个答案:

没有答案