我想通过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
规范与jQuery.ajax()
主要有两个不同之处:
从fetch()返回的Promise即使响应是HTTP 404或500,也不会因HTTP错误状态而拒绝。相反,它将正常解决(ok状态设置为false),并且只有在网络失败或任何阻止请求完成的情况下才会拒绝。
默认情况下,fetch不会发送或接收来自服务器的任何cookie,这可能导致未经身份验证的请求,如果网站依赖于维护用户会话(要发送cookie,则必须设置凭据初始化选项)。
fetch
不起作用,那么jquery
也不会起作用。对于尚未具有本地实现的浏览器,存在适用的fetch
polyfills。 - t.niesefetch
(与Promise
不同)不是JavaScript语言的特性,而是Web API的特性。但这不是我的重点。您可以在支持XMLHttpRequest
的浏览器中使用fetch
,使用polyfill。这就好像您会说在旧版浏览器中可以使用bluebird但不能使用Promises,只是因为它们没有本地实现。 - t.niese.fetch
和.json
在大多数情况下无法使用。所以,不要使用它,这是垃圾! - IncredibleHat