如何正确使用AJAX + pushState生成URL?

时间:2018-09-03 12:18:33

标签: javascript jquery ajax html5 dom

这类问题是:当我切换到页面about / index.html或Skills / index.html时,旧别名URL并未删除。 enter image description here enter image description here 据您所知,如果我转到下一个链接,我会得到/ about / skills ...,但这不是正确的路径。我正在使用Ajax + pushState。

$(document).on('click', '#nav_bar nav a,.flat-button, a.logo', function ( e ) {

		 e.preventDefault();

		 if ( !$(this).hasClass('active') ) {

			if ( app.ui.pageLoad($(this).attr('href'), $(this).attr('rel')) ) {
			   debug;
			   $('#nav_bar nav a.active').removeClass('active');
			   $(this).addClass('active');

			   window.history.pushState("", "", $(this).attr('href'));
			}


		 }

		 $('a.logo').removeClass('active');

		 e.stopPropagation();

		 return false;
	  });

pageLoad: function ( url, rel ) {

	  console.log(url);

	  if ( app.ajax !== null ) {

		 return false;

	  }
	  else {

		 app.ui.preloader.preloaderInit(rel);


		 app.ajax = jQuery.ajax({
			type: 'GET',
			url: url
		 });

		 app.ajax.done(function ( msg ) {
			var cont = $(msg).filter("#page");
			app.ui.contents = cont.contents();

			app.ajax = null;
		 });

		 app.ajax.fail(function ( jqXHR, textStatus ) {
			const errmsg = 'Error';
			$("#page").html(errmsg);

		 });


		 return true;

	  }


   },

2 个答案:

答案 0 :(得分:0)

使用根相对路径(它们以/开头)而不是相对路径(它们相对于当前文件位置进行解析):

href="skills/index.html" => href="/skills/index.html"

答案 1 :(得分:0)

我已经解决了问题 app.ajax = jQuery.ajax({             输入:“ GET”,             网址:“ http://localhost:63342/jacekjeznach.com/” +网址          });