首页 > 解决方案 > 当我用 await 调用 JQuery ajax 时如何获取 jqXHR 对象?

问题描述

我进行了一个 jquery ajax 调用,并在等待完成后获取异步结果:

async () => {
  const result = await $.ajax (url);
  console.log (result);
}

但结果我只有响应的内容,我想从 jqXHR 对象中获取标题和状态码等。我怎么得到这个?

为了回答 Rituls 的问题,我想写一些类似的东西:

const result = await $.ajax(url);
const content = result[0];
const jqxhr = result[1];
console.log ('content:', content, 'status:', jqxhr.status);

编辑:

我尝试了以下解决方法并得到了一个奇怪的行为(代码是打字稿):

const result = await ajax (gondorHeaderUrl);
console.log ('ajax result:', result);
console.log ('typeof ajax result:', typeof result);

function ajax (url: string, settings?: JQuery.AjaxSettings): Promise<JQuery.jqXHR> {
  return new Promise (((resolve, reject) => {
    $.ajax (url, settings)
      .then ((data, textStatus, jqXHR) => {
          console.log ( 'jqXHR:', jqXHR);
          console.log ( 'typeof jqXHR:', typeof jqXHR);
          resolve (jqXHR);
        },
        (jqXHR, textStatus, errorThrown) => reject (jqXHR)
      );
  }));
}

安慰:

jqXHR: Object { readyState: 4...................
typeof jqXHR: object
ajax result: <!DOCTYPE html PUBLIC ...............
typeof ajax result: string

为什么结果与 jqxhr 不同?当我将它包装到一个对象中时,它可以工作:

resolve ({j:jqxhr});

标签: jqueryajaxasync-await

解决方案


推荐阅读