Попытка доступа к данным в Console.Log - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть функция, которая запускает вызов 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" и ниже. Как я могу это сделать, в частности «status: 404»?

Спасибо.

Примечание: даже если файл найден, он дает аналогичный ответ, за исключением, очевидно, «Status: 200» .

Помогите пожалуйста?

1 Ответ

0 голосов
/ 20 апреля 2020

Итак, я думаю, что я понял это. Я попытался объяснить свой процесс в надежде, что это поможет кому-то столкнуться с той же проблемой.

Функция

Моя оригинальная функция выполняет именно то, для чего предназначена, то есть проверять, есть ли файл (в форме URL) существует. Причина, по которой вы будете делать это таким образом, заключается в том, что вызов AJAX возвращает только заголовки URL-адреса, не загружая ничего. Таким образом, вы можете узнать:

  1. файл найден ( статус 200 ) или
  2. файл не найден ( статус 404 * 1013) *)

Вот функция:

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/

...