我使用express模块作为我的node.js服务器的基础,并设置一个静态中间件如下:
self.app.use(express.static(__dirname));
在根文件夹中,我有一个 html 文件,其中包含远程服务器(与托管 Node.js 应用程序的服务器完全不同)上的 php 脚本的以下 url,该脚本返回 jsonp 数据(已从数据提供者的 xml 数据转换而来):
var strURL = 'http://example.com/jsonp.php?callback=?&url=http://dataprovider.com/1.4/?arg1=xyz;arg2=abc';
然后调用 jquery getJSON 来实际获取 json 数据:
$.getJSON(
strURL,
function (jsondata) {
// do some stuff with the json data
}
);
但是当我加载从静态 node.js 文件夹提供的 html 文件时,没有返回任何数据...代码永远不会到达 jsondata 函数。
但是,加载放置在“普通”服务器上的完全相同的 html 文件,数据获取得很好,而且如果我直接加载 strURL,数据也会正常返回。
我怀疑这与跨域问题有关,但在我的一生中,我无法使用express让页面在静态node.js服务器中工作。我已经尝试了各种解决方案,但现在我完全感到困惑和沮丧!
欢迎任何帮助。
最佳答案
过去曾遇到过 JSON 的跨域问题,并通过使用 JSONP 解决了这些问题。有一个很好的解释和教程:
关于javascript - 从 Express 静态 html 文件调用 $.getJSON() 无法获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26800552/