getjson变量的替代方法

时间:2012-10-15 21:07:38

标签: jquery json

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

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

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

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

2 个答案:

答案 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如何做到的 - 但却不那么复杂。

相关问题