React + Flux, ES6, Babel ActionCreate с использованием json-сервера и суперагента, данные не отвечают

Здравствуйте, я пытаюсь использовать json-server для моделирования API приложения React Flux ES6, которое я создаю. Но когда я использую модуль узла суперагента, чтобы сделать запрос от создателя действия, данные в обратном вызове не определены.

Вот мой код

import Dispatcher from '../Dispatcher';
import Constants from '../Constants';
import request from 'superagent';

export default {
   setQuestions(guides) {
        Dispatcher.handleViewAction({
            type: Constants.ActionTypes.SET_QUESTIONS,
            data: guides
        });
   },

   getQuestionsFromServer() {
      let self = this;
      let destination = 'http://localhost:3000/questionnaires';
      // request from json service.
      request
        .get(destination)
        .set({
              'X-Requested-With': 'XMLHttpRequest'
          })
        .end(function(response) {
          // response is empty. why???
          if (response.ok) {
              let guideData;
              guideData = response.body;
              self.setQuestions(guideData);
          }
      });
   }
};

Моя вкладка сети говорит, что запрос происходит, но я не могу получить доступ к ответу в обратном вызове.


person JYEG    schedule 22.07.2015    source источник
comment
Основываясь на этом URL-адресе, я бы предположил, что вы делаете запрос из разных источников, поэтому вам нужно настроить свой фиктивный API, чтобы установить заголовок Access-Control-Allow-Origin, чтобы вы могли получить доступ к данным. Я напишу ответ, если вы подтвердите, что это правильно.   -  person loganfsmyth    schedule 22.07.2015
comment
Извините, не совсем понимаю, что вы говорите в этом комментарии.   -  person loganfsmyth    schedule 23.07.2015


Ответы (1)


Я понял, как сделать этот запрос xhr без модуля узла суперагента, используя файл fetch es2015. См. здесь: https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch

getQuestionsFromServer() {
    let self = this;
    let destination = 'http://localhost:3000/questionnaires';
  // request from json service.response.json()
  fetch(destination)
        .then(response => response.json())
    .then(data => {
          this.setQuestions(data[0].questions);
      })
      .catch(e => console.log("Error", e));

}

Спасибо!

person JYEG    schedule 23.07.2015