Wil*_*azi 9 javascript ajax jquery
所以我需要在向客户端显示特定数据之前检查文件是否存在...使用jQuery我有:
<script>
function fileExists(fileLocation) {
var response = $.ajax({
url: fileLocation,
type: 'HEAD',
async: false
}).status;
alert(response);
}
</script>
Run Code Online (Sandbox Code Playgroud)
当我尝试运行该功能时:
<script> fileExists('http://www.example.com/123.jpg'); </script>
Run Code Online (Sandbox Code Playgroud)
(其中example.com是我的域名),我总是收到200响应代码.我想知道为什么会发生这种情况 - 是不是我通过.htaccess设置了自定义错误页面?或者,有更好的方法来做到这一点?
注意:正在使用jQuery 1.5.1.
更新:它似乎被定向到通过.htaccess设置的自定义错误页面:
ErrorDocument 404 http://www.example.com/errors/notfound.php
Run Code Online (Sandbox Code Playgroud)
不确定这是否会导致冲突,或者如何解决冲突.
解决了
我检查了自定义404页面的标题,它返回了200个响应代码.必须硬编码标题:
<?php header('HTTP/1.1 404 Not Found'); ?>
Run Code Online (Sandbox Code Playgroud)
然后将返回404响应代码 - 修复我的问题.
kal*_*yfe 10
你为什么不与回调的成功和错误异步地意识到这一点?
$.ajax({
type: 'HEAD',
url: fileLocation,
success: function(msg){
alert(msg);
},
error: function(jqXHR, textStatus, errorThrown){
log(jqXHR);
log(errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
它似乎我的发布存在我的自定义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.');
}
});
Run Code Online (Sandbox Code Playgroud)
感谢@kalyfe建议切换到异步方法.
| 归档时间: |
|
| 查看次数: |
38316 次 |
| 最近记录: |