【问题标题】:Should jQuery $.getJSON() method fail when the response is text/html?当响应是 text/html 时,jQuery $.getJSON() 方法是否应该失败?
【发布时间】:2017-01-31 06:37:11
【问题描述】:

当我们尝试使用它获取 HTML 时,是否可以强制 $.getJSON() 函数引发错误(而不是 application/json)。似乎这个 deferred 只是将空对象返回给 then(或 done)。

我们如何在then 处理程序中找到content-type 被处理的响应? 当服务不可用时,我遇到服务器可以返回 HTML 而不是 JSON 的情况。

【问题讨论】:

  • 为什么不在响应为空的情况下直接在处理程序中抛出异常呢?
  • 其实很简单,如果status是20x并且响应可以被$.parseJSON成功解析,就认为成功了。它忽略了内容类型,因为开发人员经常忘记返回它。您应该在 .then 中测试 null,如果它是 null 或空字符串(或修复服务器),则导致 promise 被拒绝

标签: javascript jquery json content-type getjson


【解决方案1】:

当响应为text/html 时,$.getJSON() 失败。看这个例子:

$.getJSON('http://httpbin.org/html')
  .then(() => console.log('success'), () => console.log('error'))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

  • 谢谢,确实如此,看来我们在没有指定正确内容类型的情况下在某处使用了 $.ajax。
猜你喜欢
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 2011-07-28
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多