我的反应应用程序中的表单标签下载 php 文件.如何解决?



我正在开发一个反应应用程序,它提供有关用户选择的国家/地区的旅游景点的信息。

目前,我的应用程序使用<form>标签连接到服务器。

这是我的反应代码:

class App extends React.Component{
submitForm = (e)=>{
}
render(){
return(
<div>
<section id="Search" onSubmit={this.submitForm}>
<form action="/public/server/search.php" method="GET">
<input placeholder="search country, attraction names" type="text" name="search"/>
<button type="submit">SEARCH</button>
</form>
</section>
<ItemList/>
</div>
)
}

}

php文件:这只是测试代码。用于检查我的 php 文件是否有效。

<?php
$message = "wrong answer";
echo "<script type='text/javascript'>alert('$message');</script>";
?>

网址没有问题。

问题是当用户提交时,浏览器会下载php文件而不是运行它。

我用谷歌搜索并发现如果它下载,我的网络服务器配置存在一些问题。

提交按钮正在下载 php 而不是运行它

表单提交,下载php

但是,当我使用 npm start 运行文件和本地主机时,我如何解决配置问题? 不是阿帕奇? 还是一样?

我尝试使用 apache 网络服务器运行我的文件(我已经有 XAMPP(,但它显示 404 错误,因为它找不到捆绑.js(webpack 文件(。

这是我的package.json文件:

{
"name": "ReactExample",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "webpack-dev-server --config ./webpack.config.js --mode 
development"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"webpack": "^4.16.0",
"webpack-cli": "^3.0.8",
"webpack-dev-server": "^3.1.4"
},
"babel": {
"presets": [
"env",
"react",
"stage-2"
]
},
"dependencies": {
"classnames": "^2.2.6",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"react-redux": "^5.0.7",
"redux": "^4.0.0"
}
}

发送到您的Web服务器的请求通常会命中index.php或.html等等。 使用标准的Web服务器配置,索引文件需要位于Web服务器根目录中,如果您使用的是XAMPP,则为htdocs/目录。 所以基本上你只能用标准配置运行一个项目。 如果必须运行多个项目,则必须为 Apache 配置 vhosts。

发生的情况是,您正在尝试使用请求点击"http://localhost:80/public/server/search.php"并期望 PHP 执行此文件,但实际上应用程序的唯一入口点是根目录中的索引文件。

因此,澄清一下,下面的所有这些链接实际上都命中了服务器索引.php而不是子目录中的任何.php文件:

  • http://awesomedomain.com/posts/show/1
  • http://awesomedomain.com/contact
  • http://awesomedomain.com/downloads/catpics

有一个名为.htaccess(Apache特定(的配置文件,它处理了很多事情,其中一些是将参数传递给入口点并重写实际URL。(如果已配置(

所以你能做的是...只需点击你的索引.php它应该位于htdocs/目录中,而不是/public/server/search.php并返回一些你选择的值。

不要被现代框架混淆 索引.php 位于子目录中,它只是一种更安全的方法,可以配置入口点。

主要的 XAMPP 配置文件位于如下位置:

Apache 配置文件:

\
  • xampp\apache\conf\httpd.conf
  • \xampp\apache\conf\
  • extra\httpd-xampp.conf

PHP 配置文件:

\
  • xampp\php\php.ini

MySQL 配置文件:

\
  • xampp\mysql\bin\my.ini

最新更新