获取API不返回相同的XMLHttpRequest返回
我想将XMLHttpRequest函数转换为获取API。但结果是不同的。获取API不返回相同的XMLHttpRequest返回
有一些事情我必须做的不对,但我不知道是什么:/
我使用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…", status: 200, statusText: "OK", responseType: "", response: "{"countMessage":"No product find" }
而我的功能与取取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);
});
该函数返回:
Response { type: "basic", url: " http://localhost:3000/app_dev.php/r …", redirected: false, status: 200, ok: true, statusText: "OK", headers: Headers, bodyUsed: false }
任何人都可以帮我吗?我不知道是什么问题,为什么我不能拥有回应:“{” countMessage“:”没有产品找到”}!我的回应:(
谢谢社区
你需要调用response.json()
阅读正文:下面的,当你阅读的身体会发生什么bodyUsed
return fetch(url, {
method: method,
header,
body: formData
}).then(function (response) {
// perhaps check the status before doing this!
return response.json();
});
例
fetch('https://jsonplaceholder.typicode.com/posts/1').then(function(response) {
console.log(response.bodyUsed);
var res = response.json();
console.log(response.bodyUsed);
return res;
}).then(function(json) {
console.log(json)
});
我已经测试了json(),并且它返回** SyntaxError:JSON.parse:在JSON数据的第3行第1列的意外字符** –
@StéphaneRICHINok,所以如果你'console.log(response.text ())'你得到了什么? – Jamiec
response.text()返回页面HTML代码 –
'bodyUsed:false'表示响应主体尚未被读取。查看https://developer.mozilla.org/en-US/docs/Web/API/Body/bodyUsed查看如何处理这个问题的例子。 – CBroe