คำถามติดแท็ก fetch-api

Fetch API เป็นการแทนที่ XHR ที่ได้รับการปรับปรุงสำหรับการสร้างคำขอ HTTP แบบอะซิงโครนัสในขณะที่จัดการการเปลี่ยนเส้นทางและการโต้ตอบกับ CORS และ Service Workers ได้ดีขึ้น

8
การดึงข้อมูลจาวาสคริปต์ - ไม่สามารถเรียกใช้งาน 'json' ใน 'การตอบกลับ': สตรีมเนื้อหาถูกล็อก
เมื่อสถานะคำขอมากกว่า 400 (ฉันลอง 400, 423, 429 สถานะ) การดึงข้อมูลไม่สามารถอ่านเนื้อหา json ที่ส่งคืนได้ ข้อผิดพลาดต่อไปนี้แสดงขึ้นในคอนโซลของเบราว์เซอร์ Uncaught (ตามสัญญา) TypeError: ล้มเหลวในการรัน 'json' ใน 'การตอบสนอง': สตรีมเนื้อหาถูกล็อค ฉันแสดงเนื้อหาของวัตถุตอบกลับที่ส่งคืนดังนี้: แต่ฉันยังสามารถใช้งานได้เมื่อหลายเดือนก่อน คำถามของฉันมีดังนี้: นี่เป็นเพียงพฤติกรรมของเบราว์เซอร์ Chrome หรือการเปลี่ยนแปลงมาตรฐานในการดึงข้อมูล? มีวิธีใดบ้างในการรับเนื้อหาของรัฐเหล่านี้? PS: เวอร์ชันเบราว์เซอร์ของฉันคือ Google Chrome 70.0.3538.102 (正式版本) (64 位)

14
ฉันจะโพสต์คำขอ x-www-form-urlencoded โดยใช้ Fetch ได้อย่างไร
ฉันมีพารามิเตอร์บางอย่างที่ฉันต้องการโพสต์รูปแบบที่เข้ารหัสไปยังเซิร์ฟเวอร์ของฉัน: { 'userName': 'test@gmail.com', 'password': 'Password!', 'grant_type': 'password' } ฉันส่งคำขอของฉัน (ขณะนี้ไม่มีพารามิเตอร์) เช่นนี้ var obj = { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', }, }; fetch('https://example.com/login', obj) .then(function(res) { // Do stuff with result }); ฉันจะรวมพารามิเตอร์ที่เข้ารหัสแบบฟอร์มในคำขอได้อย่างไร

8
อัปโหลดตัวบ่งชี้ความคืบหน้าสำหรับการดึงข้อมูล?
ฉันพยายามที่จะหาเอกสารหรือตัวอย่างของการใช้ตัวบ่งชี้ความคืบหน้าในการอัปโหลดโดยใช้ดึงข้อมูล นี่เป็นข้อมูลอ้างอิงเดียวที่ฉันพบจนถึงตอนนี้ซึ่งระบุว่า: เหตุการณ์ความคืบหน้าเป็นคุณลักษณะระดับสูงที่จะไม่มาในการดึงข้อมูลในตอนนี้ คุณสามารถสร้างของคุณเองได้โดยดูที่Content-Lengthส่วนหัวและใช้สตรีมพาสทรูเพื่อตรวจสอบไบต์ที่ได้รับ ซึ่งหมายความว่าคุณสามารถจัดการอย่างชัดเจนโดยไม่ต้องมีการตอบสนองContent-Lengthที่แตกต่างกัน และแน่นอนว่าถึงแม้ว่าContent-Lengthมันจะเป็นเรื่องโกหกก็ตาม ด้วยสตรีมคุณสามารถจัดการกับคำโกหกเหล่านี้ได้ตามที่คุณต้องการ ฉันจะเขียน "สตรีมพาสเพื่อตรวจสอบไบต์" ที่ส่งไปได้อย่างไร ถ้ามันทำให้การเรียงลำดับของความแตกต่างใด ๆ ฉันพยายามที่จะทำเช่นนี้เพื่ออัปโหลดภาพพลังงานจากเบราว์เซอร์Cloudinary หมายเหตุ : ฉันไม่สนใจไลบรารี Cloudinary JSเนื่องจากขึ้นอยู่กับ jQuery และแอปของฉันไม่สนใจ ฉันสนใจเฉพาะในกระแสการประมวลผลที่จำเป็นในการทำเช่นนี้กับจาวาสคริปต์พื้นเมืองและ Github ของfetchpolyfill https://fetch.spec.whatwg.org/#fetch-api

3
วิธีตรวจสอบว่าการตอบสนองของการดึงข้อมูลเป็นวัตถุ json ใน javascript หรือไม่
ฉันใช้ fetch polyfill เพื่อดึง JSON หรือข้อความจาก URL ฉันต้องการทราบว่าฉันจะตรวจสอบได้อย่างไรว่าคำตอบนั้นเป็นวัตถุ JSON หรือเป็นข้อความเท่านั้น fetch(URL, options).then(response => { // how to check if response has a body of type json? if (response.isJson()) return response.json(); });

10
หมดเวลาของคำขอ Fetch API หรือไม่
ฉันมีfetch-api POSTคำขอ: fetch(url, { method: 'POST', body: formData, credentials: 'include' }) ฉันต้องการทราบว่าการหมดเวลาเริ่มต้นสำหรับสิ่งนี้คืออะไร แล้วเราจะตั้งค่าให้เป็นค่าเฉพาะเช่น 3 วินาทีหรือไม่ จำกัด วินาทีได้อย่างไร

7
อนุญาตส่วนหัว Access-Control-Allow-Origin โดยใช้ HTML5 fetch API
ฉันใช้ HTML5 fetch API var request = new Request('https://davidwalsh.name/demo/arsenal.json'); fetch(request).then(function(response) { // Convert to JSON return response.json(); }).then(function(j) { // Yay, `j` is a JavaScript object console.log(JSON.stringify(j)); }).catch(function(error) { console.log('Request failed', error) }); ฉันสามารถใช้ json ปกติ แต่ไม่สามารถดึงข้อมูลของ api url ด้านบนได้ มันแสดงข้อผิดพลาด: ดึงข้อมูล API ไม่สามารถโหลดhttps://davidwalsh.name/demo/arsenal.json ไม่มีส่วนหัว "Access-Control-Allow-Origin" ในทรัพยากรที่ร้องขอ Origin ' http: …
91 html  api  url  fetch-api 

2
ฉันจะโพสต์ด้วยข้อมูลฟอร์มหลายส่วนโดยใช้การดึงข้อมูลได้อย่างไร
ฉันกำลังดึง URL เช่นนี้: fetch(url, { mode: 'no-cors', method: method || null, headers: { 'Accept': 'application/json, application/xml, text/plain, text/html, *.*', 'Content-Type': 'multipart/form-data' }, body: JSON.stringify(data) || null, }).then(function(response) { console.log(response.status) console.log("response"); console.log(response) }) API ของฉันคาดว่าข้อมูลจะเป็นmultipart/form-dataดังนั้นฉันจึงใช้content-typeประเภทนี้ ... แต่มันให้การตอบสนองด้วยรหัสสถานะ 400 รหัสของฉันผิดอะไร

1
ข้อ จำกัด ใดที่ใช้กับการตอบสนองแบบทึบแสง?
การตอบสนองแบบทึบถูกกำหนดให้เป็นส่วนหนึ่งของFetch APIและแสดงถึงผลลัพธ์ของคำขอที่ส่งไปยังต้นทางระยะไกลเมื่อไม่ได้เปิดใช้งานCORS ข้อ จำกัด ในทางปฏิบัติและ "gotcha" มีอะไรบ้างเกี่ยวกับวิธีการใช้การตอบกลับแบบทึบทั้งจาก JavaScript และเป็นทรัพยากรบนหน้าเว็บ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.