2015-05-06 5 views
1

Я использую API FETCH для получения значения, хранящегося в json-файле. Это значение должно перейти в переменную.FETCH API return [object Object]

Проблема в том, что переменная заканчивается тем, что удерживает [объект Object] в качестве значения.

var title = fetch('URL/out.json', {mode: 'cors'}); 

В HTAccess сервера, на котором размещается файл JSon, есть линия

Header set Access-Control-Allow-Origin "*" 

JSON выглядит следующим образом

{ 
    lollol 
} 

Я думаю, что JSON может быть виновником.

Я не могу найти причину, по которой объект [Object Object] является значением переменной.

Могу ли я использовать Fetch для получения размещенного текстового файла? Я пробовал - не мог заставить его работать. - просто думать об альтернативе.

+0

На самом деле он должен вернуть '[объект Promise]' , если вы не используете полипол. – Bergi

ответ

1

Попробуйте использовать .then(), как описано here:

fetch('URL/out.json', {mode: 'cors'}).then(function(response) { 
    return response.blob(); 
}).then(function(response) { 
    // process response 
}); 
+0

Теперь мой ответ [объект Blob]. –

+0

@CodyRaspien Вы определяете заголовок внутри второго 'then()', а не только полный ответ? – Justinas

+0

var title = fetch ('URL/out.json', {mode: 'cors'}), затем (функция (ответ) { return response.blob(); }), затем (функция (ответ) { response.toString; }); –

1

вам нужно укрепить объект, чтобы преобразовать его в строку JSON.

попробовать JSON.stringify(theObject)

+0

stringify выходы {"type": "text/html", "size": 4} –

-1
var myRequest = new Request('URL'); 
var title; 
fetch(myRequest).then(function(text) { 
    return response.text().then(function(text) { 
    title= text; 
     alert (title); 

    }); 
}); 

Это работает.

+1

Довольно уверен, что выбрал бы 'ReferenceError', так как' response' не определен. –

0

принести API очень обещание-ориентированной выборки возвращает обещание с объектом ответа как парам то вам необходимо вызвать метод ответа дать вам еще одно обещание с результатом

Вот пример я сделал. На первом .Затем() я назвал .json на ответ, так я могу получить мои результаты на следующей .then()

export function newVideoAsync(videoData, url) { return (dispatch) => { return fetch(url, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(videoData) }) .then(response => response.json()) .then(jsonData => { dispatch(videoSuccess(jsonData)) console.log(jsonData); // find video id to redirect to that video // client side redirect to '/video/:id' browserHistory.push('/') }) .catch(err => dispatch(videoError(err.message))); }; };

https://davidwalsh.name/fetch