2

我制作了一个脚本,它从 json 文件中获取数据并解析它。它在网络服务器上工作。

但现在我必须找到一种解决方案,让它在本地文件 ( file:///C:/xampp/htdocs/script/index.html) 上运行,而不是在服务器上运行。它仅适用于 FF:

$.getJSON('data2.json', function(data) {   
    $.each(data.selection_form.entities, function(i,name){
        ...do something
     });
});

有任何想法吗?本地网络服务器不是解决方案。

4

2 回答 2

0

您可以通过为函数指定“jsonp”的数据类型来强制 jQuery 通过JSONP加载文件。$.ajax()这将使您的浏览器创建一个<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',我们将把原始 data2.json 文件中的数据包装在对名为 的函数的调用中mycallback

mycallback({ /* your data */ });
于 2012-10-15T21:13:17.977 回答
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 的工作方式——但没有那么复杂。

于 2012-10-15T21:33:22.400 回答