2016-05-13 17 views
9

Khi sử dụng API tìm nạp để tìm nạp JSON từ REST API trên máy chủ cục bộ của tôi và cố gắng phân tích phản hồi với response.json(), tôi nhận được unexpected end of input lỗi.API tìm nạp - bằng cách sử dụng response.json() ném kết thúc lỗi đầu vào bất ngờ

Các lỗi có thể dễ dàng tái sản xuất trên máy chủ địa phương của tôi với những điều sau một liner:

fetch(new Request('http://localhost:9950/RestService/v2/search/find/1', {mode: 'no-cors'})).then(function(response) { response.json(); }); 

// Output from Chrome console: 
// Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined} 
// VM424:1 Uncaught (in promise) SyntaxError: Unexpected end of input 
//  at SyntaxError (native) 
//  at <anonymous>:1:128 

Nếu tôi xem tab Network, tôi có thể thấy rằng yêu cầu của tôi được thực hiện bởi các máy chủ, và nếu tôi xem trước câu trả lời tôi có thể thấy rằng có sẵn JSON hợp lệ ở đó (tôi đã kiểm tra kỹ điều này bằng cách sao chép và dán JSON từ tab Phản hồi Mạng vào jsonlint.com). Dưới đây là một ví dụ về các câu trả lời tôi nhận được từ máy chủ:

{ 
    "SearchMatches": [{ 
     "Extracts": ["<b>1<\/b>.txt...", "<b>1<\/b>"], 
     "Title": "1.txt", 
     "Url": "C:\\TestShare4\\500Docs\\1.txt" 
    }] 
} 

Nếu tôi cố gắng sử dụng response.text() thay vì response.json() tôi nhận được một chuỗi rỗng.

Bất kỳ suy nghĩ nào về nơi tôi có thể gặp sự cố với điều này?

Lưu ý rằng tôi có yêu cầu không phụ thuộc vào bất kỳ khung công tác hoặc thư viện nào khác ngoài những gì được hỗ trợ bởi trình duyệt.

+0

Tôi đang gặp một vấn đề tương tự, sao bạn giải quyết này? –

+1

Tôi gặp vấn đề tương tự và nó đã được giải quyết bằng http://stackoverflow.com/a/35291777/3192470. – lakesare

Trả lời

0

Tôi đã gặp sự cố tương tự này khi cố tìm nạp một số nội dung từ API instagram và giải quyết nó bằng cách sử dụng thư viện jsonp. Đây là một trong tôi đã sử dụng: https://github.com/camsong/fetch-jsonp

Yêu cầu của tôi:

import fetchJsonp from 'fetch-jsonp';  
return fetchJsonp(`https://api.instagram.com/oembed?url=${url}`, { 
     method: 'GET', 
     mode: 'no-cors', 
     credentials: 'include', 
    }) 
     .then(response => response.json()) 
     .then(response => {}); 

Hy vọng nó sẽ giúp :)

+2

Tại sao chúng ta không thể sử dụng đối tượng tìm nạp thông thường? Điều này là lạ, lib này làm gì khác nhau? –

+0

Nó thêm hỗ trợ cho các yêu cầu jsonp không được api tìm nạp hỗ trợ theo mặc định – keyserfaty

Các vấn đề liên quan