2016-05-13 16 views
9

'un beklenmeyen bir ucunu atar Yerel sunucumdaki bir REST API'sinden bazı JSON'u almak için Getirme API'sini kullanırken ve yanıtı response.json() ile ayrıştırmaya çalışırken, bir unexpected end of input alıyorum hata. Ben önizleme eğer Ağ sekmesini görüntülersenizFetch API - response.json() kullanarak giriş hatası

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 

, benim istek sunucu tarafından yerine edildiğini görebilir ve:

hata aşağıdaki tek satırlık yer ile benim yerel sunucuda kolayca tekrarlanabilir olduğunu Buradaki geçerli JSON'un mevcut olduğunu görebileceğim yanıt (JSON'u Ağ Yanıtı sekmesinden jsonlint.com'a kopyalayıp yapıştırarak bunu iki kez kontrol ettim). Ben response.text() yerine response.json() ben boş bir dize almak kullanmayı denerseniz

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

: İşte sunucudan alıyorum yanıtının bir örneğidir.

Bu konuda yanlış gidebileceğim herhangi bir düşünce var mı?

Tarayıcı tarafından doğal olarak desteklenenlerden başka herhangi bir çerçeveye veya kitaplığa bağlı olmamak şartına dikkat etmeliyim.

+0

Ben benzer bir sorun yaşıyorum Umut, bunu çözdünüz? –

+1

Aynı sorunu yaşadım ve http://stackoverflow.com/a/35291777/3192470 ile çözüldü. – lakesare

cevap

0

Aynı sorunu, instagram API'sinden bazı içeriği getirmeye çalışıyorum ve bir jsonp kitaplığı kullanarak çözdüm. https://github.com/camsong/fetch-jsonp

Benim isteği: Bu kullandığım biridir

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 => {}); 

yardımcı olur :)

+2

Normal getirme nesnesini neden kullanamıyoruz? Bu garip, bu lib nedir farklı yapıyor? –

+0

Varsayılan olarak getirme api tarafından desteklenmeyen jsonp istekleri için destek ekler – keyserfaty