首页 > 解决方案 > Fetch API 获取 php 内容而不是发出请求

问题描述

我有一个 React 组件,它使用 js fetch API 从 PHP 文件中获取数据。问题是返回的承诺包含 PHP 文件的内容,而不是我预期的 JSON。当我尝试使用.json承诺时,它给了我一个错误,我认为这是由获取 PHP 文件的内容引起的。

Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

我已经尝试过header('Content-Type')两边(js和php)。

下面是我的代码,如果您能给我一些帮助,我将不胜感激,谢谢。

import React, {Component} from 'react';

const API = '../api/rest/balances.php';

export class Balance extends Component {
    constructor(props) {
        super(props);

        this.state = {
            value: '0.00000000'
        }
    }

    componentDidMount() {
        fetch(API)
            .then(response => console.log(response.json()))
    }

    render() {
        return (
            <span className="balance">{this.state.value}</span>
        )
    }
}

PHP

<?php

use TradingBot\Connections\Factory;

header("Content-Type: application/json");

session_start();

$jsonReturn = new stdClass();

if (isset($_SESSION['usuario'])) {

    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
    //Inclui os arquivos necessários
    //Cria um objeto conexão com o banco para o usuario
    $users = Factory::makeUsers();

    //Pega as credenciais da API
    $credentials = $users->GetCredentials($_SESSION['usuario']);

    //Cria a conexão com a Binance
    $api = new Binance\API($credentials->api_key, $credentials->api_secret);

    //Tenta adquirir o balanço da conta
    try {
        $balances = $api->balances();
    } catch (Exception $e) {
        $jsonReturn->error = $e->getMessage();
        exit();
    }

    //Filtra os resultados diferentes de zero
    $available = array_filter($balances, function ($valor) {
        return $valor['available'] > 0;
    });

    $jsonReturn->saldo = $available;
    echo json_encode($jsonReturn);
    exit();
} else {
    $jsonReturn->error = "user not defined at session";
    echo json_encode($jsonReturn);
    exit();
}
?>

标签: javascriptphpreactjs

解决方案


怎么样

componentDidMount() {
      fetch(API)
      .then(response => response.json())
      .then(response => console.log(response))
}

推荐阅读