为什么我会得到这个在一个404节点
问题描述:
我想通过这样的AJAX请求发送插入表单服务器的数据作出反应:为什么我会得到这个在一个404节点
:handleUserSubmit: function(user) {
var users = this.state.data;
user.id = Date.now();
var newUsers = users.concat([user]);
this.setState({data: newUsers});
$.ajax({
url: this.props.url,
dataType: 'json',
type: 'POST',
data: user,
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
this.setState({data: users});
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
和渲染为完成
ReactDOM.render(
<UserBox url="../users" pollInterval={2000} />,
document.getElementById('data')
);
我得到这个奇怪的控制台错误:
POST http://localhost:3000/users 404 (Not Found)
由于“用户”文件(假设它试图访问用户。 json文件位于一个目录中)。我已经尝试了所有可能的变化: “./users”, “../users”, “#/用户” 等...
该行的代码错误:
url: this.props.url,
代码上面给出。任何想法发生了什么?
我的node.js代码:
app.post('/users', function(req, res) {
fs.readFile(USERDATA, function(err, data) {
if (err) {
console.error(err);
process.exit(1);
}
var users = JSON.parse(data);
var newUser = {
id: Date.now(),
firstname: req.body.firstname,
lastname: req.body.lastname,
address: req.body.address,
phonenumber: req.body.phonenumber,
email: req.body.email,
licensestate: req.body.licensestate,
licensenum: req.body.licensenum
};
console.log(newUser)
users.push(newUser);
fs.writeFile(USERDATA, JSON.stringify(users, null, 10),
function(err) {
if (err) {
console.error(err);
process.exit(1);
}
res.json(users);
});
});
});
答
更新服务器
你得到404错误后刷新状态,因为通过'http://本地主机:3000/users'上不存在服务器(即没有文件称为“用户”在根文件夹中 - 我假设你使用webpack开发服务器) – Alik
@Alik我明白,但是,它工作了一段时间,通过根文件夹你的意思是项目文件夹或文件夹从哪个服务器运行?我的users.json文件位于运行服务器的文件夹中。 –
您是否尝试设置'url =“../ users.json”'? – Alik