我正在尝试为教育目的创建一个简单的小型JS框架,但现在我遇到了一个我无法解决的问题。
目录结构
/
/framework
jquery.js
init.js
/content
home.html
style.css
index.html
问题
我显然没有在这里粘贴jQuery文件和样式表,但这里有index.html和init.js:
的index.html
<!DOCTYPE html>
<head>
<script src="framework/jquery-1.5.min.js"></script>
<script src="framework/init.js"></script>
<title>My website</title>
</head>
<body>
<div id="content">
</div>
</body>
</html>
init.js
$(document).ready(function(){
if(!window.location.hash) {
$("#content").load("../content/home.html", function() {
alert("Load was performed.");
});
}
});
home.html文件包含一些示例文本,没什么特别的。我希望jQuery将home.html的内容加载到内容div中,但是当我加载页面时没有任何反应。但是,会触发带有“已执行加载”消息的警报。
这项任务对我来说似乎微不足道,所以我犯的错误可能很愚蠢,但是我们非常感激任何帮助。
谢谢!
更新
当我在我的服务器上使用它时,它可以工作,但在localhost中它失败了。我现在不能使用Firebug技巧,因为当我在本地使用时它什么都没显示..有什么想法吗?
答案 0 :(得分:7)
在jquery 1.5版本中,load函数被破坏了。您可以在http://bugs.jquery.com/ticket/8125找到错误提示。这已在版本1.5.1中修复,尚未发布到谷歌和微软cdn。您可以找到包含所有最新修补程序的最新jquery版本,包括http://code.jquery.com/jquery-git.js上的load()
我测试并确认您的代码适用于1.5.1
答案 1 :(得分:6)
如果您使用的是Firebug,请打开NET选项卡。它允许您查看ajax响应。
您应该使用的是:/content/home.html
,而不是../content/home.html
路径位于页面的上下文中,而不是JS文件所在的位置。
答案 2 :(得分:2)
执行脚本的基本位置是index.html的位置,因此home.html的相对路径为"content/home.html"
,而不是"../content/home.html"
。
答案 3 :(得分:0)
只需使用 ./
进行尝试$(document).ready(function(){
if(!window.location.hash) {
$("#content").load("./content/home.html", function() {
alert("Load was performed.");
});
}
});
至少对我有用。