将单页应用程序转换为Express应用程序,AJAX和.json文件出现问题

时间:2016-03-13 19:32:03

标签: json ajax node.js post express

我有一个非常简单的单页应用程序(由index.html,style.css,functions.js和data.json组成),我试图将其变成一个Express / Node.js应用程序来添加一些附加功能。我是Node.js的新手。

我通过创建app.js文件来完成此操作,该文件包含以下代码:

var express = require('express');
var app = express();
var path = require('path');

// viewed at http://localhost:8080
app.use(express.static(__dirname + '/public'));

app.listen(8080);

基本的app文件都在/ public文件夹中,所以这很好用。唯一不起作用的部分是POST请求,即functions.js中的AJAX函数,它获取data.json。现在返回404。

现在,我可以通过将以下代码添加到app.js来将data.json提取到app.js中:

var testData = require("./public/data.json");
console.log(testData);

这很好用并记录到控制台,所以它正在工作,我知道它正在查找文件,但我的functions.js文件中的任何函数都无法使用这些数据。我猜这是因为它在服务器端,而AJAX请求会将它带到客户端。就像我说的,我是Node.js和Express的新手,这几乎是我的理解耗尽的地方。

所以,我的问题是,如何复制我在functions.js文件中的AJAX POST请求的功能?是不是我需要将我的data.json文件放在其他地方,或者设置另一条路由?或者我是否需要将更多此功能转移到app.js文件,并以某种方式使用在那里创建的变量(现在包含来自data.json的所有数据)在客户端?如果是这样,我该怎么做?

我理解这是一个广泛的问题 - 我不一定要在完整的代码之后提供解决方案(如果这很费力);关于在哪里寻找以及我应该如何做到这一点的指针同样有用。当我知道在哪里看时,我很乐意做自己的研究 - 现在,我不知道。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

使用GET而不是POST请求来获取静态数据。您收到的是404,因为您的快递应用程序无法处理所请求网址的发布请求。

如果您想提供动态数据,可以执行以下操作:

app.post('/data.json', function(req, res) {
  var data = {};
  data.something = 'whatever';
  res.json(data);
});