【发布时间】:2017-09-26 18:38:14
【问题描述】:
我目前正在尝试将 json 数据发布到 json 文件。为了做到这一点,我设置了一个 NodeJS 和 express 服务器,但有些事情总是搞砸了。我不断收到这样的反馈:
jquery-3.2.1.js:9566 POST http://localhost:3000/Alpha/json/details.json 404(未找到)
我阅读了其他几个问题,指出问题可能出在我的服务器端脚本中,并且我没有正确指定 json 文件。
JS 客户端发布脚本:
function sendFormData(){
var formData = JSON.stringify($("#myForm").serializeArray());
$.ajax({
type: "POST",
url:"../json/details.json",
data: formData,
success: function(){
alert("something!");
}
});
}
我的 HTML 表单:
<form action="XXXXXXXX"id="myForm"><label for="id">ID</label>
<input type="text" id="id" name="id" placeholder="Item ID number" ng-model="newDetails.id">
<label for="system">System</label>
<input type="text" id="system" name="lastname" placeholder="Type of System" ng-model="newDetails.system">
<label for="date">Date</label>
<input type="text" id="date" name="lastname" placeholder="dd-mm-yyyy" ng-model="newDetails.date">
<label for="priority">Priority</label>
<select id="priority" name="priority" ng-model="newDetails.priority">
<option value="high">High</option>
<option value="medium">Medium</option>
<option value="low">Low</option>
</select>
<label for="description">Description</label>
<textarea class="form-control" rows="3" id="desc" name="description" ng-model="newDetails.description"></textarea>
<label for="priority">Status</label>
<select id="status" name="status" ng-model="newDetails.status">
<option value="OPEN">OPEN</option>
<option value="ON HOLD">ON HOLD</option
<option value="CLOSED">CLOSED</option>
</select>
<input type="button" value="Submit" class="btn" data-dismiss="modal" style="background-color:#FFBE00; color:#002244;" onClick="sendFormData()">
</form>
NodeJS 脚本:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var path = require('path');
app.use(bodyParser.json());
app.use('../json', express.static(path.join(__dirname, 'json')));
app.use('/', express.static(__dirname + '/'));
app.post('/formdata', function(req, res) {
console.log( req.body.id + req.body.system + req.body.date + req.body.priority + req.body.description + req.body.status);
res.send("ok");
});
app.use(bodyParser.json());
// Get information submitted
app.post('/', function(req, res) {
console.log("Information received !");
console.log(req.body);
res.send("Ok!");
});
app.listen(3000);
我的节点脚本工作正常吗?为什么找不到json文件?
root/Alpha/json/details.json - 是json文件路径
我的节点脚本在根目录
【问题讨论】:
-
..在路径中有特殊含义。 -
@KevinB 我知道,它会上升一个目录。这就是我使用它的原因,即使没有两个点,我也尝试过。
-
对我来说看起来不对的是您在 app.use 中的使用方式。您用于访问 json 的路径与
../json不匹配 -
应该怎么改?
-
我不知道。你打算让它成为什么?我建议使用与您希望客户端用来访问所述静态文件的路由匹配的路由路径。我不知道你打算
../json表示什么。
标签: javascript jquery json node.js