【发布时间】:2011-09-17 08:23:20
【问题描述】:
我目前正在编写一个画廊,到目前为止,它一直在将 AJAX 和 Javascript 与一个 xml 文件结合起来以加载所有图像。现在我来到了有趣的部分,我单击图像进入内部画廊。 (在第一页上,他们加载每个会话的一个图像,当按下一个图像时,它将继续到该会话的其余图像。)
我在使用 AJAX 时遇到的问题(我相信这也有一个巧妙的技巧!)是当页面重新加载时,它会自动返回到会话索引,因为没有 URL 更改。
到目前为止,我所做的是将一个 javascript 函数放在一个仅加载图库索引的文档中。这完美无瑕。
在另一个文件中,我得到了几乎相同的代码,但它加载了加载其余会话图像的函数,但我没有让它工作。
这是应该加载特定会话图像的脚本。
<script type="text/javascript">
window.onload = displayGallery(<?php echo $_GET['session']; ?>);
</script>
<div id="gallery">
</div>
当我只有 javascript 和链接中的“onload”时它工作得很好,但后来我遇到了重新加载页面的问题。现在我只需要 php 来包含这个文件和 $_GET “displayGallery()”的变量
function displayGallery(sessionAtt)
因此,为了澄清这一点,我在解释一些东西,我需要帮助才能使 displayGallery(sessionAtt) 在从 url 中获取基本变量后实际运行。
我对 Javascript 非常熟悉。到目前为止,大部分脚本都是用 php 完成的。
编辑:
稍微解释一下这个网站:这是一个我正在为我的朋友制作的画廊。除了她和所有子页面(开始、画廊、关于等)之外,其他任何人都无法登录,都是通过 php "include" 加载的。
XML:
<gallery>
<session>
<sessionName>Beauty</sessionName>
<path>gallery/beauty/</path>
<item>
<file>_DSC2331.jpg</file>
<name>Picture 1</name>
</item>
<item>
<file>_DSC2339.jpg</file>
<name>Picture 2</name>
</item>
<item>
<file>_DSC2350.jpg</file>
<name>Picture 3</name>
</item>
<date>2011-08-03</date>
</session>
<session>
<sessionName>Red</sessionName>
<path>gallery/red/</path>
<item>
<file>_MG_6227-web.jpg</file>
<name>Picture 1</name>
</item>
<item>
<file>_MG_6235-web.jpg</file>
<name>Picture 2</name>
</item>
<item>
<file>_MG_6240-cropped-web.jpg</file>
<name>Picture 3</name>
</item>
<date>2011-08-03</date>
</session>
</gallery>
js:
function displayGallery(sessionAtt)
{
var xmlDoc = loadDoc("gallery/gallery.xml");
var sessions = xmlDoc.getElementsByTagName("session");
var txt = getGallery(sessions, sessionAtt);
document.getElementById("gallery").innerHTML = txt;
}
function getGallery(sessions, sessionAtt) {
var items = null,
i = 0,
j = 0,
sessionName = "",
link = "",
img = "",
path = "",
file = "",
txt = "";
for (i = 0; i < sessions.length; i++) {
sessionName = sessions[i].getElementsByTagName("sessionName")[0].childNodes[0].nodeValue;
if(sessionName == sessionAtt)
{
items = sessions[i].getElementsByTagName("item");
path = sessions[i].getElementsByTagName("path")[0].childNodes[0].nodeValue;
for (j = 0; j < items.length; j++) {
file = items[j].getElementsByTagName("file")[0].childNodes[0].nodeValue;
link = '<a href="' + path + file + '" rel="lightbox[' + sessionName + ']" title="' + sessionName + '">';
img = '<img src="' + path + file + '" class="thumb" onclick="displayImage();" /></a>';
txt += link + img;
}
}
}
return txt;
}
我尝试在函数中设置 sessionAtt 来运行脚本,它可以工作。
window.onload = displayGallery;
但是当把它改成
window.onload = displayGallery('Red');
手动和使用 php... 什么都没有。
【问题讨论】:
-
结合“AJAX 和 Javascript”是什么意思? AJAX 是 Javascript(异步Javascript和XML)
-
我真正想通过什么方法得到什么。 AJAX 为其他所有内容获取 xml 文件和 Javascript。我知道它们是一样的,这只是我的一个糟糕的解释。 :)
-
我想我了解您想要实现的目标,但是对于您尝试实现它的如何,我有点困惑。当你说“AJAX”时,你到底是什么意思?您在此处显示的代码并不是真正的 AJAX,当您使用 AJAX 时不应重新加载页面。
-
我玩了一下我从上一个问题中得到的脚本,即:stackoverflow.com/questions/7367460/javascript-xml-reader/…
-
如果你回显 $_GET['session'] 你会得到什么吗?
标签: php javascript xmlhttprequest