$ .getJSON执行错误回调

时间:2015-08-19 08:36:43

标签: javascript jquery html json

我有一个jQuery函数从JSON文件中获取数据,但我无法让它工作。我正在开发Brackets编辑器,当我在他们的实时预览中打开网站时,一切都很棒。但是当我在本地打开html文件时,执行$ .getJSON.error而不是正常的$ .getJSON

function loadJson(e) 
{
    $('.images').fadeOut(300);
    var jsonURL = "../../../images.json";
    var txt = $(e.target).text();
    setTimeout(function () 
    {
        $('.images').empty();
        $.getJSON(jsonURL, function(json) 
        {
            var imgList = "";
            $.each(json[txt], function () 
            {
                imgList += '<div class="image_container reference">
                                <a href="' + this.imgPath + '">
                                    <img src="' + this.imgPath + '"/>
                                    <div class="overlay">
                                        <span>' + this.name + '</span>
                                    </div>
                                </a>
                            </div>';
            });
            $('.images').append(imgList);
        }).error(function(json) { alert("error"); });
    }, 300);
    $('.images').fadeIn(300);
}

函数获取单击的项目标签,将其与JSON文件中的数组名称匹配,然后分别将这些图像附加到容器中。当我在Brackets实时预览中运行它时,它正在运行,所以我真的不知道发生了什么?

1 个答案:

答案 0 :(得分:2)

  

但是当我在本地打开html文件时,$.getJSON.error被执行

浏览器非常重视安全性。在本地工作时,Chrome会阻止任何Ajax请求到本地文件。如果请求的文件与HTML页面位于同一文件夹(或更深层),Firefox将允许您这样做。

简而言之,要么将JSON文件放在同一文件夹中并使用Firefox,要么安装本地服务器。

WAMP Server (Windows)就是我用的。您将在本地工作,但您将通过http://协议(localhost)而不是file://协议访问您的页面。那应该解决它! Mac用户可以安装MAMP