XMLHttpRequest関数をAPIをフェッチするように変換したいと思います。しかし結果は異なります。fetch 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「:」いいえ製品が見つかりません」}!
はあなたにコミュニティをありがとう、私の応答:(へを
「bodyUsed:false」は、応答本体がまだ読み取られていないことを意味します。それに対処する方法の例については、https://developer.mozilla.org/en-US/docs/Web/API/Body/bodyUsedをチェックしてください。 – CBroe