【发布时间】:2017-07-30 18:49:44
【问题描述】:
我正在尝试在 React 组件中提交一个简单的表单:
class UploadPartList extends Component {
constructor(props) {
super(props);
this.state = { data: [] };
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(e) {
e.preventDefault();
console.log('Clicking submit');
$.ajax({
type: "POST",
url: "/partListUpload",
success: function(){
console.log("Post success");
},
error: function(xhr, status, error) {
console.log(error);
}
})
}
render() {
return (
<div>
<form id="csvForm" action='' onSubmit={this.handleSubmit} method='post' encType="multipart/form-data">
<p>upload your part number list (.xls or .csv)</p>
<input id="uploadCSV" type="file" name="csv_form" />
<input type="submit" className="submitButton" />
</form>
</div>
);
}
}
我的 routes.js 文件是这样的:
import React from 'react';
import { Router, Route } from 'react-router';
import App from './components/App';
const Routes = (props) => (
<Router {...props}>
<Route path="/" component={App} />
</Router>
);
export default Routes;
我在服务器中的 Express 路由是这样定义的:
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, '..', 'build', 'index.html'));
});
app.use('/partListUpload', upload.single('csv_form'), partListUploadController);
app.post('/partListUpload', function(req, res) {
res.send(req.body);
});
但是,当我尝试提交表单时,我收到了 404 错误。似乎 React 需要 React Router 定义的路由,而不是我在服务器中定义的路由。
我查看了类似的 StackOverflow 问题,但没有找到可行的解决方案。如何点击我在后端定义的路线?
【问题讨论】:
-
Ajax 调用中的 url 相对于应用程序的根目录是否绝对正确?
-
除了示例中的URL,我还尝试了“../partListUpload”和“../../partListUpload”。都不工作。在所有这三种情况下,控制台都会记录消息“POST localhost:3000/partListUpload404(未找到)”,这似乎表明它们都在尝试相同的 URL。
标签: ajax node.js reactjs express react-router