我对Ajax有点新鲜,希望你们都能建议这两种方法中哪一种最有效。这两种方法似乎都行得通,但也许还有更好的办法呢?shadowbox通过jQuery.get()从另一个页面绘制的HTML显示
thisPage.html希望显示一个从thatPage.html(在同一主机上)绘制的html blob,以响应点击链接。我使用Shadowbox的html播放器来显示blob,并且我使用jQuery的get()作为XMLHttpRequest的快捷方式。
在我的第一个解决方案,thisPage.js包含此功能:
function loadEntry(entry){
jQuery.get('thatPage.html', function(data){
var elem = document.createElement("div");
elem.innerHTML = "<div class='entry-to-show'>" + jQuery(data).find("a[name='" + entry + "']").parent().parent().html() + "</div>";
Shadowbox.open({
options: {
enableKeys: false
},
player: 'html',
content: elem.innerHTML
});
});
};
但转念一想,而不是让thisPage负荷thatPage每次loadEntry叫,我只是把它当一次thisPage。 JS被加载,包起来为包含一个jQuery对象的变量和访问它是这样的:
var $Content = null;
jQuery.get('thatPage.html', function(data){
$Content = jQuery(data).find("#content");
});
function loadEntry(entry){
elem = $Content.find("a[name='" + entry + "']").parent().parent().html();
Shadowbox.open({
options: {
enableKeys: false
},
player: 'html',
content: elem
});
};
这是第二种方法其实更有效,或者是有一些其他的办法,这将是更适合我”米试图做什么?任何建议或一般意见将受到欢迎。
感谢, jjon
我很感谢您的回应。我试图解决的问题现在已经解决了,我猜,thatPage在独立页面中提供了一系列信息,但是我需要在本页的上下文中提供一些信息。我不想通过使用.load()和iframe或类似的东西来完成整个那个页面的格式和设计。数据只在html中,而不是在数据库或其他筒仓中,这种方法似乎(几乎)工作。它仍然有一点点皱纹,我还没有解决,现在我作为一个单独的问题发布。 – jjon 2010-02-11 15:32:01