React ES6 App-本地API调用

时间:2018-07-31 23:06:30

标签: javascript php reactjs apache es6-promise

我无法解决这个问题,似乎应该是直截了当的,但这并不是单击。

我有一个使用create-react-app创建的ES6应用程序。我已经为项目设置了所有模板和布局,然后尝试从我想放在应用程序内的API提取数据-就像一个装满MVC的MVC,其中React处理视图,然后运行模型和控制器在PHP中。

因此我想在其中一个组件中获取一个函数以获取一些数据。我使用fetch()函数(我知道这与许多浏览器尚不兼容,但这又是一天的问题)来获取从组件到要加载的模型的相对路径,但是fetch函数会处理我的路径作为对基本URL的调用,后跟请求。因此,使用在localhost:3000上运行的站点,我在getData()函数中运行以下代码...

let test = fetch('../models/overall-stats.php').then(function(response) {
        console.log(response);
        return response;
    });

...然后抓取到的URL是http://localhost:3000/models/overall-stats.php,它可以简单地解析回index.html文件并加载应用程序,而不是我请求的PHP文件。

如果我需要打该PHP文件来获取数据,我在使用访存中是否错了?还是我使用不正确?如果我不应该使用访存,有什么更好的方法来解决这个问题?

当我在apache服务器上运行此文件(在构建和部署之后)时,我可以使提取工作正常(apache可以识别URL的结构并按预期的方式命中它),并且我命中该文件没有问题,但是我需要能够在本地开发环境中工作并具有相同的功能。该应用程序最终将实时部署在apache服务器上。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

我睡着之后就知道这将是非常简单的……我只需要将我的模型和控制器移动到公共目录中就可以访问它们。我将对模型进行身份验证,以使它们不能直接被命中,而只能通过GET请求被命中。

答案 1 :(得分:0)

您为什么不只使用${baseUrl}/models/...之类的东西?

要解决浏览器获取问题,您也可以导入Polyfill或直接使用axios(我的选择)!

答案 2 :(得分:0)

也许您可以尝试使用ajax从服务器获取或发布数据,就像这样:

 $.ajax({
        url: '../models/overall-stats.php',
        data: {

        },
        type: 'GET',
        dataType : 'json',
        success : function(res){
           let obj = parseJSON(res)
        }

    })

或将其添加到您的php文件中,因为CORS:

header('Access-Control-Allow-Origin: *');