【问题标题】:load a page + ajax call automactically using external link (with Jquery)使用外部链接(使用 Jquery)自动加载页面 + ajax 调用
【发布时间】:2011-12-02 21:21:39
【问题描述】:

当点击侧边栏中的链接时,我有一个页面会加载信息片段。

http://www.youarehere.im/other-financial-services.html

一切正常。

我也想从 index.html 文件链接到该页面,但要自动加载相关部分,而不是其默认状态。

因此,在主页上,“accounts”链接会加载“other-financial-services.html”并自动向服务器请求“accounts”链接的 ajax 调用。

有什么想法吗?我知道这个 Jquery sn-p 是完全错误的,但我对前端脚本非常陌生,而且我在黑暗中拍摄!

HTML:

<div class="box accounting"><h2><a id="service_accounts">Accounting</a></h2></div>

jQuery:

$(document).ready(function() {
    $.ajaxSetup({
        cache: false
    });

    var ajax_load = "<img src='img/load.gif' alt='loading...' />";
    var load_services = "other-financial-services.html";
    var accounts = "accounts.php";

    $('#service_accounts').click(function() {
        $.get(load_services).load(accounts);
    });
});

【问题讨论】:

  • 示例页面 URL 中的侧边栏在 FF8 中对我不起作用。
  • 仅供参考:您的元内容标签未关闭,并且您在 ajax.js(第 46 行,.get(load_services).load(accounts);)中有错误,导致菜单在 FF8 和 IE9 中不起作用
  • Rory,感谢您对元标记的提醒。我在发布时就知道 Ajax.js 已损坏,现在已修复。
  • 其实我的意思是感谢 syserr0r 的元标记提醒!

标签: jquery ajax


【解决方案1】:

我认为你应该这样做:

<div class="box accounting"><h2><a id="service_accounts">Accounting</a></h2></div>
<div id='target'></div>

$('#service_accounts').click(function(){
    //load the html page int the div with id=target (of course is just an example)
    $('#target').load(load_services);
    $.get(accounts, function(data){
        //do something with data returned from the server
     });
});

【讨论】:

  • 除了一些 JS 错误外,他还可以使用 AJAX 子菜单,据我了解,他想从另一个页面直接链接到 子菜单
【解决方案2】:

如果我理解正确,您希望根据您打开页面的位置更改这些变量?

var load_services = "other-financial-services.html";
var accounts = "accounts.php";

这意味着您需要找到一种方法将参数传递到此页面,以便您可以在值之间切换。 不幸的是,我缺乏任何像样的 PHP 知识,但我认为应该可以添加

?ajaxloadselector=1 

到您的网址?

然后您可以在链接到此页面的页面中编辑 URL,并在此页面上进行切换,根据传递的 'ajaxloadselector' 参数填充变量。

【讨论】:

  • 据我了解,他希望能够直接链接到一个子菜单页面,这就是问题所在。
  • 页面本身是通过 Ajax 加载的,不是吗?如果我误解了,道歉:-)
  • 我可能误解了你的回答,我很抱歉:$
【解决方案3】:

在主页上,如果您想链接到“金融服务”页面的“会计”子菜单选项,请创建如下链接:

http://www.youarehere.im/other-financial-services.html#accounts

和js代码类似

var url = document.location.toString();
if (url.match('#')) { // the URL contains an anchor
  // click the navigation item corresponding to the anchor
  var anchor = '#' + url.split('#')[1];
  $('#load_' + anchor).click();
}

因此,每当您在 url 中加载带有 #&lt;something&gt; 的页面时,都会点击元素 #load_&lt;something&gt;

代码无耻地从http://blog.rebeccamurphey.com/2007/12/04/anchor-based-url-navigation-with-jquery 窃取(并修改)

【讨论】:

  • 我真的很喜欢这个解决方案的想法,不幸的是我还不能让 JS 工作。遵循建议并在 document.ready() code$(document).ready(function() { var url = document.location.toString(); if (url.match('#')) { / / URL包含锚点 // 点击锚点对应的导航项 var anchor = '#' + url.split('#')[0]; $('#load_' + anchor).click(); }
  • 我已经看到您对代码所做的更改,您需要将上面的代码放在$(document).ready(function() { ... }); 的底部,因为上面的代码试图“点击”没有任何作用的链接目前尚未设置点击事件(它位于文件的下方)。
  • 在你的代码中你有url.split('#')[0],它应该是url.split('#')[1],因为你想要文本之后 #(在我的例子中是accounts,所以它会“点击”#load_accounts)
  • 您可以找到稍小的ajax.js here 副本。虽然我无法对其进行测试,但它应该可以工作,因为所有侧边栏都有一个以load_ 开头的id 并且load_ 之后的文本与页面名称匹配。
  • smaller ajax.js 做了一些更正,我的一个更正在最新版本中被撤消了,哎呀!得到它here。适合我尝试着急... cmets 只能编辑 5 分钟(单击此框可关闭)
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
相关资源
最近更新 更多