Как предоставить текстовый файл json клиентскому ajax-запросу на сервере node.js - PullRequest
0 голосов
/ 16 мая 2019

Я запускаю простое веб-приложение node.js на сервере aws ubuntu. У меня есть некоторые данные JSON из API, которые я храню локально на сервере Ubuntu в текстовом файле с именем data.json.

Я просто хочу загрузить эти данные из файла json с помощью вызова AJAX и отобразить его на стороне клиента html.

Вот моя структура каталогов проекта:

    MyApp
      server.js
      index.html
      data.json

Этот код на стороне клиента работает в Webstorm и локально, но на моем работающем сервере возвращает ошибку (похоже, он возвращает html-файл ошибок вместо json, который объясняет ошибку синтаксического анализа, но не решает, как получить эти данные ).

<script>
    $(document).ready(function(){
      $.ajax({
             url: "/data/data.json",
             method: "GET",
             dataType: "json",
             error: function() {
                  console.log("error");
             },
             success: function(data) {
                  console.log(data);
             }
        });
  });
</script>

Я думаю, что мне нужно обработать этот json-файл изнутри узла, чтобы я мог сделать HTTP-запрос GET со стороны клиента, но не понимаю, как все это происходит вместе. Может кто-нибудь помочь помочь привести пример?

Редактировать: Node server.js код:

var express = require('express');
var app = express();
var server = require('http').createServer(app);

var router = express.Router();

router.use(function (req, res, next) {
    console.log("/" + req.method);
    next();
});

router.get("/",function(req, res){
    res.sendFile(__dirname + "/index.html");
});

app.use("/",router);

app.use("*",function(req, res){
    res.sendFile(__dirname + "/index.html");
});

app.use('/data', express.static('public'));

server.listen(process.env.PORT || 3000);
console.log('Server is running on port 3000...');

1 Ответ

1 голос
/ 16 мая 2019

Я бы предложил поместить *.json файлы в подпапку. Чем на стороне сервера дать статический доступ к этой папке.

Пример: положить все *.json файлы в ./public папку

// server.js
const express = require('express')
const app = express()

app.use('/data', express.static('public'))
...

Клиентская сторона:

$.get( "/data/my-file.json", function( data ) {
  alert( "Data Loaded: " + data );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...