你好聪明的人!
我一直在试图弄清楚为什么我无法使用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
答案 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()
{}
});