2015-06-25 38 views
5

我能够从parse使用以下命令成功检索对象:转换卷曲GET到JavaScript撷取

curl -X GET \ 
-H "X-Parse-Application-Id:1231231231" \ 
-H "X-Parse-REST-API-Key: 131231231" \ 
-G \ 
--data-urlencode 'where={"uid":"12312312"}' \ 
https://api.parse.com/1/classes/birthday` 

但我挣扎将其转换为JavaScript,使用下面的代码我会得到响应与状态200。我认为错误是将数据进行urlencode数据

var getObject = function { 
    var url = "https://api.parse.com"; 
    url += '/1/classes/birthday'; 

    fetch(url, { 
     method: 'GET', 
     headers: { 
      'Accept': 'application/json', 
      'X-Parse-Application-Id': '12122', 
      'X-Parse-REST-API-Key': '12121', 
      'Content-Type': 'application/json', 
     }, 
     data: '{"where":{"uid":"12312312"}}' 

    }) 
    .then(function(request, results) { 
     console.log(request) 
     console.log(results) 
    }) 
} 

谢谢!

+1

我对'fetch'并不熟悉,但它看起来应该不像'data'那样有单引号,就像'data:{“其中”:{“uid”:“12312312”}}' – chiliNUT

+0

@ chiliNUT刚刚尝试过,相同的响应方式,谢谢虽然:'body:(...),bodyUsed:false,headers:Headers,ok:true,status:200,statusText:“OK”,type:“cors”,网址:“https://api.parse.com/1/classes/birthday”' – user3430761

+0

你是否解决了这个问题?即时尝试类似的东西,但我不管我把数据,甚至格式不正确的JSON,我从类/运行的所有项目。它没有过滤任何东西,或给我错误。当我做同样的卷曲,我得到“json错误”,这是正确的事情得到 – pvinis

回答

3

好,所以基本上你需要另一个。所以这与承诺有关。我想通了阅读这篇文章真棒http://blog.gospodarets.com/fetch_in_action/

后,你需要做的是什么

var getObject = function { 
    var url = "https://api.parse.com"; 
    url += '/1/classes/birthday'; 

    return fetch(url, { 
     method: 'GET', 
     headers: { 
      'Accept': 'application/json', 
      'X-Parse-Application-Id': '12122', 
      'X-Parse-REST-API-Key': '12121', 
      'Content-Type': 'application/json', 
     }, 
     data: '{"where":{"uid":"12312312"}}' 

    }) 
    .then(function(response) { 
    return response.text(); 
    }) 
    .then(function(data){ 
    console.log(data); //this will just be text 
    var data_obj = JSON.parse(data); 
    return data_obj 
    }) 

} 

我真的不明白你为什么要返回response.text()。再有事情做的承诺

https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise

因为当我访问response.text()从第一个即可。它返回一个承诺。

希望一些其他类型的绅士可以评论和解释为什么返回response.text()将承诺变成你需要的数据。

- 编辑 -

我加了一些回报,以显示你如何能够拥有的getObject返回了响应数据的对象。所以

var d = getObject(); 

现在将返回作为js对象的响应。

+0

是的查尔斯!我爱你:D – Pixelomo

9

因为我经常想这样做,所以我制作了https://kigiri.github.io/fetch/,你可以复制/粘贴一个curl命令,它会给你提取代码。

如果您想以不同的方式使用它,您可以检出来源。

+0

不适用于-F params。 – user3696212

+0

@ user3696212我添加了对-F的支持,试用一下并告诉我你是否有任何问题。 – kigiri

+0

祝福你做到这一点! – Ben