- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
典型的 AJAX 和 Fetch API 有什么区别?
考虑这个场景:
function ajaxCall(url) {
return new Promise(function(resolve, reject) {
var req = new XMLHttpRequest();
req.open('GET', url);
req.onload = function() {
if (req.status == 200) {
resolve(req.response);
} else {
reject(Error(req.statusText));
}
};
req.onerror = function() {
reject(Error("Network Error"));
};
req.send();
});
}
ajaxCall('www.testSite').then(x => {
console.log(x)
}) // returns html of site
fetch('www.testSite').then(x => {
console.log(x)
}) // returns object with information about call
这是 fetch
调用返回的内容:
Response {type: "cors", url: "www.testSite", status: 200, ok: true, statusText: "OK"…}
为什么返回不同的东西?
有没有办法让 fetch
返回与典型 AJAX 调用相同的内容?
最佳答案
Fetch API 内置了针对不同数据类型的方法。
对于常规文本/html,您可以使用 text()
方法,该方法也会返回一个 promise,并将其与另一个 then 调用链接起来。
fetch('www.testSite').then( x => {
return x.text();
}).then( y => {
console.log(y);
});
返回内容内置如下
clone()
- 创建 Response 对象的克隆。error()
- 返回一个与网络错误关联的新响应对象。redirect()
- 使用不同的 URL 创建新响应。arrayBuffer()
- 返回使用 ArrayBuffer 解析的 promise 。blob()
- 返回一个用 Blob 解决的 promise 。formData()
- 返回使用 FormData 对象解析的 promise 。json()
- 返回使用 JSON 对象解析的 promise 。text()
- 返回使用 USVString(文本)解析的 promise 。它还允许您将内容发送到服务器,或添加您自己的 header 等。
fetch('www.testSite', {
method : 'post',
headers : new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
}),
body : new FormData(document.getElementById('myform'))
}).then( response => {
return response.json(); // server returned valid JSON
}).then( parsed_result => {
console.log(parsed_result);
});
关于javascript - Fetch 与 AjaxCall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332701/
我的 asp.net MVC View 中有以下代码:- $('body').on("click", "#transferserver,#transfersd,#transferfirewall,#t
我有一个网站,ajax 调用将从 Asp.Net-Mvc 操作中获取一些 Json 数据。 现在我正在尝试在其中进行植入错误处理。 但我被困在如何做到这一点上。 我发现最简单的方法是在 Control
典型的 AJAX 和 Fetch API 有什么区别? 考虑这个场景: function ajaxCall(url) { return new Promise(function(resolve,
我目前正在使用 Phaser.js 开发一个项目,在处理 Highscore 时遇到了问题。当游戏进入称为“结束”的最后一个状态时,它会打开一个引导模态对话框,其中包含已达到的分数和一个可以输入您的名
下面给出了有效的ajax调用代码 $('#callControllerBtn').click(function () { currentlySelectedRow = grid.select(
嗨,我有一个 Jqgrid 子网格。在里面我有上传控制。 上传控件工作正常,直到询问文件并选择文件。 但是我无法读取后端vb.net端的文件值。 Javascript代码: $('#FormPath'
当我下载一些新插件时,例如。 jquery 插件我把它们放在 js 文件夹中。 css 和 img 也一样。 所以我所有不同的应用程序都共享它们。但是我应该把我的 js/img 和 css 放在哪里用
在使用 ajax 调用访问 API 时出现以下错误 readyState":0,"status":0,"statusText":"error" Ajax调用方法: var deviceId = FCM
我是一名优秀的程序员,十分优秀!