这是我的简单 ajax 请求:
$.ajax({
url: "my/dir/",
success: function (data) {
console.log(data);
}
});
当我在本地主机上执行它时(白括号实时预览),它会生成一个包含目录数据的 html 文件,我可以使用该文件使用一些 jquery 解析数据,例如:
$(data).find("a:contains(.jpg)").each(function () {
它工作完美!但是,当我在主机提供商上执行相同的 ajax 函数时,它会给出 403(禁止) 错误,并生成一个包含错误内容的 html 文件,例如
You do not have permission, please contact your host provider etc.
他们告诉我这是因为这个目录中没有要执行的索引文件。所以他们让我更加困惑,然后他们帮助了我。
是否有解决方法可以不在每个目录中手动创建索引文件? 或者是我遗漏了 $.ajax
的某些内容如果重要的话,这是我的完整源代码:
$('#accordion2 a').on('click', function () {
if (!$(this).hasClass("added")) {
$(this).addClass('added');
var popid = $(this).attr('href');
var dir = $(this).attr('id');
$.ajax({
url: "../images/com_droppics/" + dir
, success: function (data) {
$(data).find("a:contains(.jpg)").each(function () {
var filename = this.href.replace(window.location.host, "").replace("http://", "");
$(popid).append("<img class='zoomable draggable' style='position: relative; left: 0px; top: 0px;' src='" + filename + "'>");
$(".draggable").draggable({
revert: "invalid"
});
$(".draggable").disableSelection();
})
$('.zoomable').click(function () {
$(this).toggleClass('zoom');
$(".zoomable").not($(this)).removeClass('zoom');
})
}
})
}
})
再次..它在我的本地主机上运行得很好,当我单击“#accordion2 a”时,它会打开一个弹出窗口并使用提供的目录附加所有图像
最佳答案
您的网络服务器可能没有directory listings已激活(这可能是为您提供本地服务器上的文件列表的原因,该服务器可能正在运行 Apache)。
您可以在远程服务器上激活它,具体取决于它运行的服务器软件及其配置方式。
尝试在根目录中创建(或打开)一个 .htaccess
文件(或者,如果您只想列出一个目录,则直接在该目录中),并让它显示
Options +Indexes
然后,输入您想要从中获取列表的目录,看看会发生什么。您可能仍然收到 403、500 错误或目录列表。在前两种情况下,您需要与您的网络提供商联系,看看他们是否可以帮助您。
关于javascript - Ajax成功: function (data) not premmision 403 (Forbidden),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171393/