【发布时间】:2017-05-31 16:38:26
【问题描述】:
我想将 XMLHttpRequest 函数转换为获取 API。但结果不一样。
有些事情我必须做错,但我不知道是什么:/
我对 XMLHttpRequest 的承诺:
return new Promise(function (resolve, reject) {
let formData = new FormData($searchForm);
if (searchTerm.length) {
formData.append("search", searchTerm);
}
let request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE && request.status === 200) {
console.log(request);
resolve(request.responseText);
}
};
request.open($searchForm.method, $searchForm.action, true);
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
request.send(formData);
});
返回(我想要的):
XMLHttpRequest { onreadystatechange: reload/http://localhost:3000/app_dev.php/r...", 状态: 200, statusText: "OK", responseType: "", response: "{"countMessage":"No product find" }
还有我的 fetch API 函数:
function searchReload() {
const formData = new FormData($searchForm);
const url = $searchForm.action;
const method = $searchForm.method;
if (searchTerm.length) {
formData.append('search', searchTerm);
}
const header = new Headers();
header.append('X-Requested-With', 'XMLHttpRequest');
return fetch(url, {
method: method,
header,
body: formData
}).then(function (response) {
return response;
});
}
searchReload()
.then(response => {
return console.log(response);
});
这个函数返回:
响应{类型:“基本”,网址:“http://localhost:3000/app_dev.php/r...”, 重定向:false,状态:200,ok:true,statusText:“OK”,标题: 标头,bodyUsed: false }
有人可以帮助我吗?我不知道是什么问题,以及为什么我无法对我的回复做出 response: "{"countMessage":"No product find" } :(
感谢社区!
【问题讨论】:
-
bodyUsed: false表示尚未读取响应正文。查看developer.mozilla.org/en-US/docs/Web/API/Body/bodyUsed 了解如何处理的示例。
标签: javascript ecmascript-6 fetch-api