如何使用Ajax从本地JSON获取数据?

时间:2017-04-28 08:19:34

标签: javascript json node.js ajax

你好聪明的人!

我一直在试图弄清楚为什么我无法使用Ajax加载本地JSON文件。我打赌这是一些愚蠢的错字,我完全误解了一些东西。我使用的是Node.js Express。

两个文件的位置:

" trollytrains / views / trips.ejs" (执行ajax请求)

" trollytrains / JSON / allstops.json"

$.ajax(
    {
      type: "GET",
      url: "../json/allstops.json",
      contentType: "application/json; charset=utf-8",
      dataType: "json",     
      success: function (data) {

        alert('success');

      },

      error: function (msg) {
        alert("error");
        alert(msg.responseText);
      }
    });

我尝试在各种变体中修改网址:

./ allstops.json

allstops.json

JSON / allstops

/ JSON / allstops

/json.allstops.json

无论我输入什么,我都会收到404错误。

GET http://localhost:1337/json/allstops.json 404 (Not Found) jquery.min.js:4

我是否输入了错误的网址,或者我的代码中是否还有其他问题尚未检测到?我对JSON和Javascript都很陌生,所以我不会感到惊讶。

我真的很感激一些提示!

最佳

/ J

2 个答案:

答案 0 :(得分:1)

  

我是否输入了错误的网址,或者我的代码中是否还有其他一些我未检测到的问题?

这取决于您是否可以在示例中访问请求中的URL:

GET http://localhost:1337/json/allstops.json 404 (Not Found) jquery.min.js:4

当您使用浏览器转到http://localhost:1337/json/allstops.json时,查看是否看到了正确的JSON。如果你得到404,那么这个PATH不会提供这个JSON,问题可能是你的后端无法提供JSON,或者你使用了错误的URL。

如果您没有包含实际尝试提供相关JSON的代码的一行代码,则无法告诉您后端代码是否正常。

我的假设是你没有提供JSON文件。

我假设您的整个应用程序都位于trollytrains目录中,并且您的目录中有json目录。如果你正在使用Express,那么你需要使用这样的东西:

app.use('/json', express.static(path.join(__dirname, 'json')));

有关使用和不使用Express提供静态文件的更多选项,请参阅以下答案:

答案 1 :(得分:0)

试试这个。

  $.ajax({
  url: '../json/allstops.json',
  dataType: 'json',
  data: 
  async: false,
  success:function()
{}
});