首先,感谢这个社区。我慢慢开始理解这些东西,我感谢所有的反馈。也就是说,我提出了另一个问题。
情况:我正在尝试建立一个新站点,并且正在尝试将其用作学习经验来使用一些 php 并自学 javascript(注意,我现在想坚持使用 js 而不是跳到 jquery直到我更好地处理 js)。我创建了一个画廊,顶部有一系列缩略图,点击后会在下面的 div 中填充艺术品、标题和描述。
设置:因为我希望通过名称而不是数字(例如数组)来调用它们,所以它们可以互换,我将每个构建为包含所有组件的 id 的 div,然后我通过调用它到目标位置剧本:
function changeDiv(id) {
var target = document.getElementById('generic');
var id = document.getElementById(id);
target.innerHTML = id.innerHTML;
}
在正文中,它看起来像:
<img src="images/thumbs/digital-art/thumb-space-oddity.jpg" id="thumb-space-odity" onclick="callDiv('space-oddity')"/>
...
<div class="gallery-frame" id="generic"></div>
目前这是可行的,但由于我必须有一个位置来调用所有 div,因此我在页脚中添加了一个 php 包含,因此它最后加载但包含我可能需要的所有图像:
<div style="display:none;">
<?php include("gallery.php"); ?>
</div>
...但据我了解,这仍然意味着页面将加载所有会真正减慢页面速度的内容。所以我需要一个新的解决方案。
我的挑战:首先,有没有办法专门在javascript中做到这一点?如果是这样,我很乐意这样做!
假设我不能,我已经开始研究 AJAX 以了解它是如何工作的,虽然它开始具有名义意义(对 javascript 来说仍然是新的,所以我只得到了一半)并且在 w3schools.com 和stackoverflow 主题之间我认为我有一个大致了解我需要做什么,但它仍然无法正常工作。
问题:根据上面的stackoverflow评论,我尝试在我自己的实例中重新创建示例函数,并将其设置如下:
<script type="text/javascript">
function createXMLHttpRequest() {
try {
return new XMLHttpRequest();
}
catch (e)
{ alert('XMLHttpRequest not working'); }
try {
return new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{ alert('Msxml2.XMLHTT not working'); }
try {
return new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{ alert('Microsoft.XMLHTTP not working'); }
alert("XMLHttpRequest not supported");
return null;
}
function callDiv(id) {
var xmlHttpReq = createXMLHttpRequest();
var url = "gallery.asp?ID=" + id;
xmlHttpReq.open("GET", url, true);
xmlHttpReq.send();
}
</script>
根据我所读到的内容,我只保留了第一部分,因为它设置了函数(删除 null 和提示,因为我不需要它们)并尝试让 callDiv 函数运行与我之前使用的脚本相同。我还将gallery.php 页面保存为.asp 页面,但我应该将其保留为php 吗?
它必须是.ashx吗?
而且由于我不知道调用它的文件,所以我不知道原始示例中使用的“?REASON”是什么意思。我试过 ?ID 以为我在告诉它寻找一个 ID。这是错误的,还是不必要的?
谢谢!
-克里斯