小编典典

使用Ajax和jQuery检查文件是否存在-始终返回200响应

ajax

所以我需要在向客户端显示特定数据之前检查文件是否存在…使用jQuery我有这个:

<script>
function fileExists(fileLocation) {
    var response = $.ajax({
        url: fileLocation,
        type: 'HEAD',
        async: false
    }).status;
    alert(response);
}
</script>

当我尝试运行该功能时:

<script> fileExists('http://www.example.com/123.jpg'); </script>

(其中example.com是我的域),我总是收到200响应码。我想知道为什么会这样-
是因为我通过.htaccess设置了自定义错误页面吗?还是有更好的方法来做到这一点?

注意 :正在使用jQuery 1.5.1。

更新 :似乎它正指向通过.htaccess设置的自定义错误页面:

ErrorDocument 404 http://www.example.com/errors/notfound.php

不知道这是否导致冲突,或如何解决。

解决了

我检查了自定义404页面的标题,它返回了200个响应代码。不得不硬编码标题:

<?php header('HTTP/1.1 404 Not Found'); ?>

然后返回404响应代码-解决了我的问题。


阅读 345

收藏
2020-07-26

共1个答案

小编典典

看来我的签发与我的自定义404页面一起存在,该页面返回了200状态代码。我必须使用php
header()函数对404响应代码进行硬编码,从而解决了我遇到的问题。现在,如果该页面不存在,则可以正确执行以下操作:

使用一种简单的方法来测试当前是否存在页面/文件:

$.ajax({
    type: 'HEAD',
    url: 'http://www.example.com/index.php',
    success: function() {
        alert('Page found.');
    },  
    error: function() {
        alert('Page not found.');
    }
});

感谢@kalyfe提出了切换到异步方法的建议。

2020-07-26