将当前URL更新为ajax GET请求url jquery

时间:2016-03-18 02:58:31

标签: javascript jquery ajax laravel-5

我正在使用我网站上的过滤器。用户可以一次选择多个过滤器,结果就像任何电子商务网站一样。我可以使用ajax GET请求获取结果。每次过滤器更改时我都在使用跟随功能。

function filterCandidates() {
var edu = [];
var salary_exp = [];
var jobtype = [];
var url = window.location.href;
//var tech = [];
var gender = [];
var sorting = $('#sorting').val();

$('input.edu:checked').each(function () {
    var ed = $(this).val();
    edu.push(ed);
});
$('input.sldr').each(function () {
    var t_sc = $(this).val();
    salary_exp.push(t_sc);
});
$('input.gndr:checked').each(function () {
    var c_sc = $(this).val();
    gender.push(c_sc);
});
$('input.jtype:checked').each(function () {
    var jt = $(this).val();
    jobtype.push(jt);
});

var edu_str = '';
if (edu.length > 0) {
    edu_str = '&edu[]=' + edu;
}
var gender_str = '';
if (gender.length > 0) {
    gender_str = '&gender[]=' + gender;
}
var jobtype_str = jobtype.length > 0 ? '&jobtype[]=' + jobtype : '';
var salaryexp_str = salary_exp.length > 0 ? '&salary[]=' + salary_exp : '';
var sort_str = sorting != '' && typeof sorting !== 'undefined' ? '&sort=' + sorting : '';

var addition_url = edu_str + gender_str + +salaryexp_str + jobtype_str + sort_str;
var data = {};

 $('#loading-img').show();
$.ajax({
    url: url + addition_url,
    data: data,
    cache: false,
    type: 'get',
    beforeSend: function (xhr) {
        var token = $('meta[name="csrf_token"]').attr('content');

        if (token) {
            return xhr.setRequestHeader('X-CSRF-TOKEN', token);
        }
    },
    success: function (data) {
        if (data === 'No Results Found') {
            $('#search_res').hide();
            $("#no_candidate").removeClass('hidden');
        } else {
            $('#search_res').show().html(data);
            $("#no_candidate").addClass('hidden');
        }
        $('#loading-img').hide();
        window.scrollTo(0, 0);
        //$('#search_res').load(document.URL+" #search_res");
    },
    error: function (xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
    }

});

}

我想知道电子​​商务网站如何在过滤器(复选框或选择)更改中传递URL中的参数。我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

是否要将所有过滤器值添加到浏览器地址栏中当前显示的网址?

如果是这样,您应该将过滤器的每次更改保存到 window.location.hash 。例如window.location.hash ='gender [] = male& edu [] = foo';将www.example.com#gender [] = male& edu [] = foo添加到您的网址。

然后在执行ajax请求之前,可以将window.location.hash的值添加到ajax url并请求过滤后的数据。

因此网店用户可以分享网址www.example.com#gender [] = male& edu [] = foo,当有人打开网站时,您必须检查网址中是否已定义过滤器。如果是这样,你必须立即执行ajax调用。