我创建了一个脚本,它从json文件中获取数据并解析它。它在网络服务器上运行。
但是现在我必须找到一个解决方案,让它在本地文件(file:///C:/xampp/htdocs/script/index.html
)上工作,而不是在服务器上。它只适用于FF:
$.getJSON('data2.json', function(data) {
$.each(data.selection_form.entities, function(i,name){
...do something
});
});
有什么想法吗?本地网络服务器不是解决方案。
答案 0 :(得分:0)
您可以通过为$.ajax()
函数指定数据类型“jsonp”,强制jQuery通过JSONP加载文件。这将使您的浏览器创建一个<script>
标记来加载文件,而不是依赖于XmlHttpRequest。但是,您需要将数据包装在回调函数中。
注意:虽然您可以使用$.getJSON(..)
通过JSONP加载数据,但您无法显式指定回调函数(这是加载静态文件所需的,因为jQuery使用更改回调功能名称)。
您的代码:
$.ajax({
url: 'data2.json',
dataType: 'jsonp',
jsonpCallback: 'mycallback',
jsonp: false,
success: function(data){
$.each(data.selection_form.entities, function(i, name) {
... do something
}
}
});
注意jsonpCallback: 'mycallback'
这里,我们将在调用名为mycallback
的函数时包装原始data2.json文件中的数据:
mycallback({ /* your data */ });
答案 1 :(得分:0)
这是另一种选择。
我们可以自己构建JSONP,用于一次性解决方案:
function mycallback(data){
$.each(data.selection_form.entities, function(i,name){
...do something
}
}
$('body').append('<script src="data2.json" type="text/javascript"></script">');
基本上,这是jQuery如何做到的 - 但却不那么复杂。