【问题标题】:jQuery Page Load According to Location Pathname根据位置路径名加载 jQuery 页面
【发布时间】:2014-08-02 05:30:13
【问题描述】:

我目前在尝试通过 jQuery 根据标题加载页面时遇到问题! 最初,当我通过.click 加载页面时,我将标题更改为#/Pathname。现在我的问题来了,而不是个人不得不不断地去主页,然后点击一个按钮,它会导致pathname 我希望他们能够直接转到www.example.com/main.php#/Pathname 并让 jQuery 能够加载页面......这可能吗? 我试过这段代码,但没有运气:

if (document.location.pathname == "main.php#/Home") {
            $('#content').load('home.php', function( response, status, xhr ) {
          if ( status == "error" ) {
            var msg = "Sorry but there was an error: ";
            $( "#error" ).html( msg + xhr.status + " " + xhr.statusText );
          }
          });
}

忽略错误脚本,它只是出于我自己的目的!

【问题讨论】:

  • 当您说“不走运”时,究竟是什么问题?您是否使用浏览器控制台验证 document.location.pathname 是否返回预期值?现在,当您单击其中一个按钮时,是否会发生任何事情,是否显示您的错误和/或在控制台中记录任何 JS 错误?

标签: javascript jquery ajax pathname


【解决方案1】:

我假设您正在尝试管理页面的“状态”。

我强烈建议您查看 window.history.pushState,它可以帮助您正确地重写页面的 URI,同时还可以管理适当的历史会话。

推送一个状态:

window.history.pushState("","",URI );

到popState

window.addEventListener('popstate', function(event) {

your code here to manage event history

});

此外,您在解析 URI 时也遇到了问题。 我使用该函数进行 uri 解析和检查,因为我的页面带有诸如 ?id=...&name=

之类的参数
function getUrlParameter( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return null;
  else
    return results[1];
}

所以在你的情况下,我会:

window.history.pushState("","",URI + "?page=home);

并测试我是否有家 : => getUrlParameter("home")

你的页面格式是#/强制吗? 如果没有,请使用我引用的那种代码,这将使您能够管理适当的历史记录、回退等。

如果是,我们会考虑另一种解决方案。

如果这不能完全回答您的问题,请提供更多信息以及这没有回答什么。 祝你好运

--- 编辑

function getUrlParameter( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\#/]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return null;
  else
    return results[1];
}

【讨论】:

  • 是的,'#/' 是强制性的,因为加载页面时按下的链接的 href 为 "#/Pathname"。当我将 href 更改为 "?page=pathname" 时,jquery 不再工作,它会加载一个错误。
  • 我已更改正则表达式以检查模式 #/ 因此,如果您的启动 getUrLParameter(pathname) 将以 true 响应
  • 好吧,对不起,如果我问这个听起来很愚蠢,但我根本不懂 javascript,那么如果路径位置有效,我将如何启动该 jquery 脚本
  • 试着学一点JS。没有什么是魔法。 JQUERY 只是一个 Javascript 库.. 所以如果您不了解基础知识,没有人可以帮助您
猜你喜欢
  • 2010-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多