在静态 json 文件上的 Node js 上使用 getJSON 时不支持获取协议
Posted
技术标签:
【中文标题】在静态 json 文件上的 Node js 上使用 getJSON 时不支持获取协议【英文标题】:Getting protocol not supported when using getJSON on Node js on static json file 【发布时间】:2013-09-26 23:32:04 【问题描述】:在我的节点 js 文件中,我有以下代码:
var jqxhr = $.getJSON( "favs.json", function()
console.log( "success" );
)
.done(function()
console.log( "second success" );
)
.fail(function( jqxhr, textStatus, error )
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
)
.always(function()
console.log( "complete" );
);
并且在服务器中有一个名为favs.json
的文件,和上面的js文件在同一个目录下。但是,当我访问该页面时,我得到了错误:
Request Failed: error, Protocol not supported.
有谁知道怎么回事?
谢谢。
【问题讨论】:
在服务器端我们 fs 读取文件而不是 getJSON getJSON 用于前端 【参考方案1】:并且在服务端有一个名为favs.json的文件,和上面的js文件在同一目录下。
如果文件位于服务器上,为什么不直接使用fs.readFile()
读取它?
var fs = require('fs');
var fileContents;
fs.readFile('./favs.json', function (err, data)
if (err) throw err;
fileContents = data;
// ...
);
如果您真的想使用XMLHttpRequest
获取该文件的内容,
-
确保可以通过应用程序中的 HTTP(S) 服务器访问它。
输入要获取的文件的完整 URL(例如
http://localhost/favs.json
。)
显然$.getJSON
在未指定时使用了一个意外(可能为 null)的值作为协议。
【讨论】:
以上是关于在静态 json 文件上的 Node js 上使用 getJSON 时不支持获取协议的主要内容,如果未能解决你的问题,请参考以下文章
Node.js Express js在较大文件上提供静态文件的速度非常慢