我有一个函数,它运行ajax调用,使用以下代码查看文件是否存在
function doesItExist(filenamePath) {
return jQuery.ajax({
url: filenamePath,
type:'HEAD'
});
}
当我尝试使用在console.log中读取时
console.log(doesItExist(some path));
我得到以下信息:
{readyState: 1, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
readyState: 4
getResponseHeader: ƒ (a)
getAllResponseHeaders: ƒ ()
setRequestHeader: ƒ (a,b)
overrideMimeType: ƒ (a)
statusCode: ƒ (a)
abort: ƒ (a)
state: ƒ ()
always: ƒ ()
then: ƒ ()
promise: ƒ (a)
pipe: ƒ ()
done: ƒ ()
fail: ƒ ()
progress: ƒ ()
complete: ƒ ()
success: ƒ ()
error: ƒ ()
responseText: ""
status: 404
statusText: "Not Found"
__proto__: Object
我似乎只能访问顶部{}中的内容,无法访问"readyState:4"及以下的任何内容。我该怎么做,特别是"状态:404"?
谢谢。
旁注:即使找到了文件,它也会提供类似的响应,除了"状态:200"。
请帮忙?
所以,我想我已经想通了。我试着解释我的过程,希望这能帮助遇到同样问题的人。
函数
我的原始函数正是它想要做的,即检查文件(以URL的形式(是否存在。这样做的原因是AJAX调用只返回URL的头部,而不下载任何内容。通过这种方式,您可以了解是否:
- 找到文件(状态200(,或
- 未找到文件(状态404(
下面是函数:
function doesItExist(filenamePath) {
return jQuery.ajax({
type:'HEAD',
url: filenamePath
});
}
现在,我需要调用该函数,以便在剩余的cose中使用数据(响应(。
调用函数
这就是我错的地方。
我之前所做的是尝试console.logAJAX调用。这不会给我任何有用的回应,除非我告诉AJAX调用我需要从中得到什么,以及我需要调用的哪一部分。
doesItExist(some path).done(function(response, textStatus, jqXHR) {
console.log("XHR: " + (jqXHR.status));
});
简单地说,我调用这个函数就像调用任何其他函数一样:
doesItExist(parameters);
然而,使用AJAX调用,您可以根据调用是否成功获得各种响应。你可以通过使用回调来做到这一点:
.done()
成功时.fail()
不成功时(出现错误(- 无论成功或错误,
.always()
都会运行 .then
(对此不重要(
使用这些回调,我们可以从jqXHR中获得结果,jqXHR是jQuery(jq(XMLHttpRequest( XHR以下是有关该主题的更多信息:https://api.jquery.com/jquery.ajax/