所以我需要在向客户端显示特定数据之前检查文件是否存在…使用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响应代码-解决了我的问题。
看来我的签发与我的自定义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提出了切换到异步方法的建议。