jQuery load()失败,但没有JS错误

时间:2011-02-06 15:53:09

标签: javascript jquery load

我正在尝试为教育目的创建一个简单的小型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技巧,因为当我在本地使用时它什么都没显示..有什么想法吗?

4 个答案:

答案 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.");
        });
    }
});

至少对我有用。