首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从jqXHR返回初始$.ajax.then

从jqXHR返回初始$.ajax.then
EN

Stack Overflow用户
提问于 2017-05-13 06:44:41
回答 1查看 346关注 0票数 0

我最初的任务如下:

  1. 执行jQuery.ajax()
  2. 成功后,对服务器返回的数据进行额外检查。
  3. 如果这些检查失败,则返回被拒绝的承诺。

在googling搜索和堆栈溢出之后,出现了以下解决方案:

代码语言:javascript
复制
$.ajax({
  type: "POST",
  url: "some url",
  data: somedata,
  error: somefunction
}).then(function (data) {
  if (!ajaxSuccess(data, null, null)) {
      return new $.Deferred().reject().promise();
  }
  return data;
});

(函数ajaxSuccess确实执行上文第2段中提到的检查。)

我不喜欢这段代码的最后一行:

代码语言:javascript
复制
return data;

IMHO,返回原来的ajax jqXHR对象要正确得多,因为代码的结果将被第三方库js-Grid.com使用,该库期望jqXHR/答应。

所以问题是:

  1. 返回原始的ajax jqXHR比解析JSON更正确吗?
  2. 如何返回原始jqXHR?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-05-13 06:55:45

  1. 意见是不相关的--做代码所需的事情。
  2. jQuery对承诺是如何工作的有一个非常松散的解释,特别是对于AJAX系列函数,传递给.then的回调函数实际上接收三个参数。

所以,你可以:

代码语言:javascript
复制
$.ajax({
  type: "POST",
  url: "some url",
  data: somedata,
  error: somefunction
}).then(function (data, textStatus, jqXHR) {
  if (!ajaxSuccess(data, null, null)) {
      return new $.Deferred().reject().promise();
  }
  return jqXHR;
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43950083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档