【问题标题】:ReactJS and Axios - PHP Rest api get whole PHP code instead of ECHO [duplicate]ReactJS 和 Axios - PHP Rest api 获取整个 PHP 代码而不是 ECHO [重复]
【发布时间】:2020-01-12 09:11:08
【问题描述】:

我正在尝试使用 ReactJS 和 Axios 从 PHP 文件中仅获取“测试”响应。但是从rest.php而不是“Test”获取整个代码。

当我尝试访问 localhost/rest.php 时,只得到“测试”字样,PHP 运行良好。

我做错了什么?

谢谢

app.jsx


import React, { Component } from 'react';

import './App.css';

import axios from 'axios';


class App extends Component {
  constructor(props) {
    super(props);
    this.state = {

    };
  }


  componentDidMount() {
    const url = './api/rest.php'

        axios.get(url)
      .then(res => {
        const persons = res.data;
        this.setState({ contacts: persons });
      })


  }


  render() {
    return (
      <div style={{ width: "100%", height: "100vh" }}>
          {this.state.contacts}
      </div>
    )
  }
}

export default App;

和rest.php

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

        $data = json_decode(file_get_contents("php://input"), true);

    $host = "localhost"; 
    $user = "root"; 
    $password = ""; 
    $dbname = "musteri"; 
    //$con = mysqli_connect($host, $user, $password,$dbname);


    echo "test";

【问题讨论】:

  • 这与 MySQL、React 和 Axios 无关。出于某种原因,您的本地网络服务器将您的 Php 文件视为文本。
  • 但是如果是apache问题,当他访问页面时应该将php文件渲染为文本对吗?
  • 这不是 apache 问题,因为当我从浏览器直接调用时 PHP 文件返回“测试”
  • 那么问题是 URL ./api/rest.php 解析到与 localhost/rest.php 不同的地方(因此它很可能是一个 Apache 问题,因为你完全绕过了 Apache 并且不应该)

标签: javascript php


【解决方案1】:

axios.get(url)实际上读取的是PHP本地文件,而不是PHP脚本的结果。

如果你想要解释版本,你必须设置url = 'http://the-server/api/rest.php'(用你的Apache服务器替换'the-server',也许是'localhost')

【讨论】:

  • 是的,使用 localhost 可以。但是此时获取html标签为纯文本,echo "test"."&lt;br/&gt;"."test2"。我看到&lt;br /&gt; 是纯文本,而不是新行
  • 因为字符串 &lt;br/&gt; 是换行的 HTML 代码。如果您想要一个真正的新行 (CR),请使用 PHP_EOL 常量:echo "test".PHP_EOL."test2";
猜你喜欢
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 2012-02-27
  • 1970-01-01
相关资源
最近更新 更多