Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вставка get запроса в урл (https://javascript.ru/forum/dom-window/77577-vstavka-get-zaprosa-v-url.html)

Янковиц 22.05.2019 14:40

Вставка get запроса в урл
 
На некое событие вешаю ajax:
var data = { action : 'sort_product', order : order, orderby: _this.data('orderby'), term : _this.data('term') };
$.ajax({
	url : ajaxurl,
	type: 'post',
	data: data,
	success: function(data){
		$('#loop').empty().html(data);
		// как вставить строку get запроса в url браузера?
		// делаю так:
		history.pushState('', '', window.location.pathname+'?'+$.param(data));
		// но в урл что-то не понятное: [url]http://site.ru/?0=%3C&1=p&2=r&3=e&4=%3E&5=A&6=r&7=r&8=a&9=y&10=%0A&11=(&12=%0A&13=+&14=+&15=+&16=+&17=%5B&18=a&19=c&20=t&21=i&22=o&23=n&24=%5D&25=+&26=%3D&27=%3E&28=+&29=s&30[/url]
	}
});

Malleys 22.05.2019 14:55

var data = { action: 'sort_product', order: order, orderby: _this.data('orderby'), term: _this.data('term') };
$.ajax({
	url: "ajaxurl",
	type: "post",
	data: data,
	success: function(data){
		$("#loop").empty().html(data);
		var url = new URL(window.location);
		url.search = new URLSearchParams(data);
		history.pushState("", "", url);
	}
});


Но зачем пустое состояние??? Может лучше так?
var data = { action: 'sort_product', order: order, orderby: _this.data('orderby'), term: _this.data('term') };
$.ajax({
	url: "ajaxurl",
	type: "post",
	data: data,
	success: function(data){
		$("#loop").empty().html(data);
		window.location.hash = new URLSearchParams(data);
	}
});

Янковиц 22.05.2019 15:03

Спасибо большое

Янковиц 22.05.2019 15:03

Интресно, возможно удалить пустые параметры?

Malleys 22.05.2019 15:19

Вы имеете в виду такое?
var data = { action: 'sort_product', order: order, orderby: _this.data('orderby'), term: _this.data('term') };
$.ajax({
	url: "ajaxurl",
	type: "post",
	data: data,
	success: function(data){
		$("#loop").empty().html(data);
		var params = new URLSearchParams(data);

		for(const [key, value] of new URLSearchParams(params)) {
			if(value === "") params.delete(key);
		}

		window.location.hash = params;
	}
});


Часовой пояс GMT +3, время: 12:45.