fetch 和 jquery ajax 有啥区别?
Posted
技术标签:
【中文标题】fetch 和 jquery ajax 有啥区别?【英文标题】:What is the difference between fetch and jquery ajax?fetch 和 jquery ajax 有什么区别? 【发布时间】:2017-08-18 11:00:45 【问题描述】:我想通过 fetch 发送一个 post 请求,但是它不起作用。
但是如果我通过 jQuery ajax 来做,它会成功。
我想知道这两种方式的区别,如果我在这里使用 fetch 有什么问题:
fetch('http://localhost:8888/news',
method:"post",
data:"code=7&a=8&b=9"
).then(function(data)
data.json().then(function (json)
【问题讨论】:
fetch 在 IE 中不起作用:developer.mozilla.org/en-US/docs/Web/API/… @Alex Fetch API 在 ios Safari (10.2) 中也不起作用 caniuse.com/#search=fetch 但它在所有其他当前主流浏览器中都可以使用——包括桌面 Safari 和 Edge 14+ @Alex jquery 不是浏览器的一部分,如果你说fetch
不起作用,那么jquery
也不会起作用。有些浏览器的 fetch polyfills 还没有原生实现。
@t.niese,jquery 不是一部分,因为它是库,可以在任何浏览器中使用,但 fetch 不是。 fetch 是 javascript 的一部分,而 javascript 是浏览器的一部分。
@Alex fetch
(与 Promise
不同)不是 javascript 语言功能,而是 web api 功能。但这不是我的意思。您可以使用polyfill 在支持XMLHttpRequest
的浏览器中使用fetch
。这就像你说你可以在旧浏览器中使用 bluebird 但没有 Promises,只是因为它们没有本地实现。
【参考方案1】:
Fetch
规范与jQuery.ajax()
的区别主要有两个方面:
即使响应是 HTTP 404 或 500,从 fetch() 返回的 Promise 也不会拒绝 HTTP 错误状态。相反,它将正常解析(将 ok 状态设置为 false),并且它将仅在网络故障或任何阻止请求完成时才拒绝。
默认情况下,fetch 不会从服务器发送或接收任何 cookie,如果站点依赖于维护用户会话(要发送 cookie,必须设置凭据 init 选项),则会导致未经身份验证的请求。
【讨论】:
以上是关于fetch 和 jquery ajax 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章