【问题标题】:Image files not loading through jquery ajax from server cpanel图像文件未从服务器 cpanel 通过 jquery ajax 加载
【发布时间】:2020-08-14 22:10:49
【问题描述】:

我不知道这是否是重复的问题,但我已经搜索并找不到解决方案

我是 cpanel 的新手,我最近在其中上传了我的项目。现在我的网站中有一部分是通过 jquery ajax 加载图像文件夹的。现在这在本地服务器 xampp 中运行良好,但在服务器中却没有,它一直给出 404 错误,这意味着 ajax 脚本没有发现文件。出于安全原因,我现在不打算分享链接,但我会解释完整的过程

这些是这些文件夹的位置。这些脚本位于 js 文件夹中。但显然它包含在索引页面中。无论如何让我们移动

var svgFolder = "img/svg/";
var productImagesFolder = "img/ImagesForProducts/";

以下是我用来加载这些文件夹图像的 ajax 脚本

$.ajax({
    url: svgFolder,
    success: function (data) {
        $(data).find("a").attr("href", function (i, val) {
            if (val.match(/\.(jpe?g|svg)$/)) {
                $(".svg-shapesDiv").append("<img src='" + svgFolder + val + "' id='svg-shapes' loading='lazy'>");
            }
        });
    }
});
$.ajax({
    url: productImagesFolder,
    
    success: function (data) {
        $(data).find("a").attr("href", function (i, val) {
            if (val.match(/\.(jpe?g|jpg)$/)) {
                $("#avatarlist").append("<img style='cursor:pointer;' class='img-polaroid' src='" + productImagesFolder + val + "' loading='lazy'>");
            }
        });
    }
});

所有这些在 localhost 服务器中都可以正常工作,但是由于某种原因,当我将它们上传到 cpanel 时它停止了工作。

我尝试像这样对img 标签进行硬编码

<img src='img/svg/file.svg' id='svg-shapes' loading='lazy'>
<img src='img/ImagesForProducts/file.png' id='svg-shapes' loading='lazy'>

我尝试过的事情

这很好用,所以我认为 ajax 没有找出地址。我还尝试通过浏览器中的链接搜索图像,例如domainname.com/img/svg/file.svg,它也可以正常工作。我也尝试为 ajax 提供这样的路径 domainname.com/img/svg/file.svg 但它不起作用。我检查了文件大小写等,但一切都是正确的

如果这是一个愚蠢的问题,那么我很抱歉,但我不知道我做错了什么,而且我也是 cpanel 和实时托管的新手。

【问题讨论】:

  • img/svg/ 下是否有一些 index.php 文件收集文件列表以返回到 ajax 调用?如果服务器端没有构建您收到的 html 的脚本,那么您是否依赖索引?如果是这样,那么默认情况下可能会禁用索引,您需要一个 htaccess 来启用它们,但最好有一个服务器端脚本来收集文件名并以更好的格式(如 json 而不是 html 来处理客户端)返回它们。
  • 感谢您的评论。我在 img/svg/ 下没有任何 index.php 文件,问题是我对 htaccess 了解不多,我不知道为什么在 img/svg 文件夹中需要 index.php 文件,我不知道不知道索引。你能给我一个链接,我可以从中学习这些东西或只是术语。我很抱歉这么愚蠢,事情是我编码,但从未尝试上传等,也从未为这些东西学习过任何教程,因为它不需要所以你能告诉我这个以便我可以学习它:)

标签: javascript php jquery ajax cpanel


【解决方案1】:

根据对我的评论的回复,听起来好像您的 xampp 默认启用了“索引”。请看这里:https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html

可能是在您的共享虚拟主机上,默认情况下它们被禁用,您需要为这两个目录启用它们。当您使用 cpanel 时,请参见此处:https://docs.cpanel.net/cpanel/advanced/indexes/82/ 但这也可以通过将 .htaccess 文件添加到包含 Options +Indexes 的 2 个文件夹中来实现。

以这种方式依赖索引的问题在于,不同的服务器可能会返回略有不同的 html,因此您可能会发现您的 xampp 服务器返回 html 链接(您的 JavaScript 搜索锚标记并从那里获取 href)但共享服务器可能不返回链接它可能只返回文件名。同样返回这个 html,你的 JavaScript 必须解析那个 html,搜索所有链接并提取 href。因此,我建议编写一个 php 脚本来收集相关文件并仅返回 JSON 格式的文件。 JavaScript 更容易解析和使用,您现在可以完全控制返回的内容,无论它是在您的 xampp 服务器还是其他主机上。你可以随心所欲地调用这个脚本,你可以把它放在你想要的任何地方。您甚至可以有一个脚本来接受来自您的 AJAX 调用的查询参数,以及它知道要查看哪个文件夹以及它必须从该文件夹中收集哪些类型的文件的那些脚本。这还具有使这些文件夹中的所有其他文件不被窥探的优点。

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 2010-11-06
    • 2011-11-06
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多