我正在使用jQuery(1.4.4)使用一些JavaScript构建Rails(3.0.3)应用程序。在其中一个站点上,我添加了一个click事件监听器,并希望使用AJAX请求加载一些内容。
$(document).ready(function() {
$("a#settings").click(function() {
$("div#box").load("settings.js");
return false;
});
});
当我现在打开网站“http:// localhost:3000 / entities / 3”,其中绑定了点击监听器的链接所在的位置,然后单击链接我收到404错误。发生这种情况是因为AJAX请求使用URL“http:// localhost:3000 / entities / settings.js”而不是(我将要求)“http:// localhost:3000 / entities / 3 / settings.js”。
答案 0 :(得分:1)
some有一个非常相似但与图书馆无关的答案question:
这就是相对路径的工作方式。
protocol://some.domain.name/dir1/dir2/filename
如果只指定一个新文件名“foo”,则会获得相同的协议,主机和目录,只会更改文件名:
protocol://some.domain.name/dir1/dir2/foo
如果指定整个路径“/ dir3 / filename2”,则会获得相同的协议和主机名,但使用其他路径:
protocol://some.domain.name/dir3/filename2
您还可以指定主机名“//another.domain.name/dir5/filename3”并获得相同的协议,但另一个主机,目录和文件名:
protocol://another.domain.name/dir5/filename3
可能令人困惑的是,如果指定的网址指向目录而不是文件,网络服务器内部可以在网址末尾添加/。
protocol://some.domain.name/somename
如果“somename”是网络服务器将其转换为
的目录 protocol://some.domain.name/somename/
供参考,请参阅RFC 1808
第4部分中的第6步答案 1 :(得分:0)
查看$.fn.load
和随后$.ajax
的jQuery源代码,我找不到任何试图考虑相对路径的内容。它确实从绝对路径中提取信息,但这只是为了测试远程。话虽如此,尝试以下,看看结果是否有所不同,因为我可能错过了一些东西:
$(document).ready(function() {
$("#settings").click(function() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "settings.js", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
$('#box').html(xhr.responseText);
}
};
xhr.send(null);
return false;
});
});
我的猜测是,这可能是特定于浏览器的问题。