【问题标题】:Trying to access data in Console.Log尝试访问 Console.Log 中的数据
【发布时间】:2020-04-18 04:27:27
【问题描述】:

我有一个运行 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”。

请帮忙?

【问题讨论】:

  • 我刚刚删除了让您非常恼火的评论。请注意,Stack Overflow 中的 cmets 并非旨在提供答案;它们可以而且应该用于提供提示或要求澄清。
  • @ÁlvaroGonzález 并不是因为它让我如此恼火。当我开始回复你时,我感谢你的评论。我只是希望得到帮助,而不是您分享的内容。我会尽快在回复中发布当前对我有用的答案。
  • 恐怕这只是一个误会,可能是由于我的解释不善。在您的回答中,您解释说您需要定义回调函数,这正是我想说的。没关系,我很高兴你把它修好了。
  • 没问题。现在我在让函数在 jQuery 通过 FOR 循环之前等待时遇到问题。 jQuery.when() 我认为就是这样。不知道我哪里出错了。
  • 我想我通过使用 jQuery.each 而不是 For 循环解决了这个问题。

标签: javascript jquery ajax console


【解决方案1】:

所以,我想我已经想通了。我试图解释我的过程,希望这可以帮助遇到同样问题的人。

功能

我的原始函数完全按照它的意图去做,即检查文件(以 URL 的形式)是否存在。这样做的原因是 AJAX 调用仅返回 URL 的标头而不下载任何内容。这样,您可以确定是否:

  1. 找到文件(状态 200),或
  2. 找不到文件(状态 404

函数如下:

function doesItExist(filenamePath) {

  return jQuery.ajax({
    type:'HEAD',
    url: filenamePath
  });

}

现在我需要调用该函数,以便我可以在其余部分中使用数据(响应)。

调用函数

这是我错的地方。

我之前所做的是尝试console.log AJAX 调用。除非我准确地告诉 AJAX 调用我需要什么以及我需要调用的哪一部分,否则这不会给我任何有用的响应。

doesItExist(some path).done(function(response, textStatus, jqXHR) {
    console.log("XHR: " + (jqXHR.status));
});

为了稍微简化一下,我调用这个函数就像你调用任何其他函数一样:

doesItExist(parameters);

但是,通过 AJAX 调用,您可以获得基于调用是否成功的各种响应。您可以通过使用回调来做到这一点:

  1. .done() 成功时
  2. .fail()不成功时(有错误)
  3. .always() 无论成功或错误都会运行
  4. .then(对此不重要)

使用这些回调,我们可以从 jqXHR 获取结果,即 jQuery (jq) XML HttpRequest (XHR)。

这里有更多关于这个主题的信息:https://api.jquery.com/jquery.ajax/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2017-11-03
    • 2023-03-04
    相关资源
    最近更新 更多