没有得到Fetch API的响应(使用Laravel API的React本机)

时间:2017-05-31 05:22:31

标签: laravel reactjs react-native laravel-5.3 fetch-api

我使用的是React原生0.44,Fetch API和Laravel 5.3 API。

当我尝试使用Fetch API获取URL时,它不提供输出或响应。

由于localhost:8000无法在Fetch API中使用,我尝试使用wifi ipaddress。

    doSignUp() {

     console.log("inside post api");
     fetch('http://192.168.43.244:8000/api/user?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjE0NywiaXNzIjoiaHR0cDpcL1wvbG9jYWxob3N0OjgwMDBcL2FwaVwvYXV0aGVudGljYXRlIiwiaWF0IjoxNDk2MjA0ODgwLCJleHAiOjE0OTYyMDg0ODAsIm5iZiI6MTQ5NjIwNDg4MCwianRpIjoiRGdtSDNSWXl4MEtUZWs2YSJ9.yc0FvK5uJz8rzDWAZLwweDMrz6ljTWkTzvxgtCjEqAc', {
           method: 'GET',
            headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
  },
      }).then((response) => response.json())
        .then((responseJSON) => console.log("inside responsejson"))
        .catch(e=>console.error(e))
        .done();
     }

7 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我使用npm es6-promise和isomorphic-fetch包解决了它。试一试

 import fetch from 'isomorphic-fetch';
require('es6-promise').polyfill();

你可以像

一样使用它
fetch('/holidays/occasion', {
          credentials: 'same-origin',
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify({
           state: evt.target.value
         })
        });
      },

答案 1 :(得分:0)

尝试通过尝试检查状态是否正常

fetch('http://192.168.43.244:8000/api/user?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjE0NywiaXNzIjoiaHR0cDpcL1wvbG9jYWxob3N0OjgwMDBcL2FwaVwvYXV0aGVudGljYXRlIiwiaWF0IjoxNDk2MjA0ODgwLCJleHAiOjE0OTYyMDg0ODAsIm5iZiI6MTQ5NjIwNDg4MCwianRpIjoiRGdtSDNSWXl4MEtUZWs2YSJ9.yc0FvK5uJz8rzDWAZLwweDMrz6ljTWkTzvxgtCjEqAc', {
method: 'GET',
            headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
  }}).(res => {
 if (res.status === 'OK') {
   console.log('I should be getting the data')
   return res.json() 
 }
}).then(res => console.log(res))

答案 2 :(得分:0)

运行命令adb reverse tcp:8000 tcp:8000并重新加载应用程序。

答案 3 :(得分:0)

Fetch是一个低级别的库,如果你想要保持理智,不建议使用它。实际上,fetch仅在遇到网络错误时拒绝承诺。所有其他http错误将进入您检查if (response.ok)

的块

对于我的本机反应项目,我正在使用此包axios

此外,请注意,如果您使用的是iOS本地项目,除了本地主机以外的任何地址都将被拒绝,并且可能会无声地失败,因为除了https之外的所有通信都不允许 App Transport Security。我相信这就是你所面对的

答案 4 :(得分:0)

为什么你正在使用方法Get,Header类的AJAX请求。您可以使用在官方文档中解释的简单提取。react-native fetch api

答案 5 :(得分:0)

使用生产服务器网址解决了这个问题。

问题是fetch api,而且axios也无法访问localhost。

答案 6 :(得分:0)

尝试在您的提取选项中添加键值对credentials: 'include'。 RN 0.44引入了withCredentials XHR标志,您可以看到here