2016-04-11 1 views
0

Как я могу получить данные json из apiUrl? Нужна помощь в написании функцииполучить json данные из функции api, используя response.js

changeUrl: function(evt){ 
     this.setState({ 
      value: evt.target.value, 
      apiUrl: "https://test.holmusk.com/food/search?q=" + evt.target.value 
     }); 
     }, 

     getJson: function() { 

     }, 
+2

Вы не «используете» реакцию на получение данных из API. Реакция - это только компонент вида. Вы можете использовать javascript для создания HTTP-вызовов для получения данных из вашего API. Если вы много делаете с данными, я рекомендую посмотреть на flux/redux/alt. Существует множество библиотек http, которые можно использовать там. Мне нравится использовать https://github.com/mzabriskie/axios или вы даже можете просто использовать $ .get (apiUrl, function (data) {}); – erichardson30

ответ

2

Ваш код немного сбивает с толку, потому что это трудно сказать, почему вы устанавливаете apiURL в SetState, когда я предполагаю, что вы должны вызвать этот URL, чтобы получить данные в формате JSON. Комментирующий делает хороший вывод о настройке архитектуры поиска данных с использованием библиотеки, такой как Redux. Однако, если вы хотите просто сделать Javascript-сообщение с простой ванилью, вы можете сделать что-то вроде ниже. Трудно сказать, нужен ли Json в состоянии вашего компонента, но я предполагаю, что вы это сделали, поэтому я переделал код с учетом этого предположения.

changeUrl: function(evt){ 
      getJson(evt.target.value); 
    }, 

    getJson: function(newVal) { 
     var request = new XMLHttpRequest(); 
     request.open('GET', "https://test.holmusk.com/food/search?q=" + newVal, true); 
      request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');  
      //this callback gets called when the server responds to the ajax call    
      request.onreadystatechange = function(){ 
       if (request.readyState === 4 && request.status === 200){ 
        var returnedJson = JSON.parse(request.responseText); 
        //this is where you would want to run setState if you need the returned Json for it. 
        setState({newJson: returnedJson}); 
       } 
       else if (request.readyState === 4 && request.status !== 200){ 
        alert('error'); 
       }   
      };  
      request.send(); 
    } 
Смежные вопросы