【问题标题】:$.getJSON executes the error callback$.getJSON 执行错误回调
【发布时间】:2015-11-12 10:54:02
【问题描述】:

我有一个从 JSON 文件中获取数据的 jQuery 函数,但我无法让它工作。我正在括号编辑器中开发,当我在他们的实时预览中打开网站时,一切都很好。但是当我在本地打开 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 实时预览中运行它时,它按预期工作,所以我真的不知道发生了什么?

【问题讨论】:

  • just stops working, gives me error - 什么错误?
  • 应该是您的 json 文件路径的问题。它能够在使用括号时解析相对路径,但在浏览器中它无法这样做
  • $.getJSON(jsonURL, function(json) {}).error(function(json) {}); 被执行而不是正常的 $.getJSON
  • 将您的 json url 替换为该文件的确切地址而不是路径
  • when I open html file locally... - 这就是你的问题。来自file:// 的任何ajax 请求都被视为跨域请求,您不能这样做。您需要它在 Web 服务器上运行,所以一切都在域或本地主机上。

标签: javascript jquery html json


【解决方案1】:

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

浏览器非常重视安全性。在本地工作时,Chrome 会阻止对本地文件的任何 Ajax 请求。只有当请求的文件位于与 HTML 页面相同的文件夹(或更深)中时,Firefox 才会允许您这样做。

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

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

【讨论】:

  • 谢谢。但它仍然无法在域上运行(当我上传它时)。我将 JSON 文件放在与 jQuery 脚本相同的文件夹中,但它仍然执行错误。
  • 当您打开 JavaScript 控制台 (F12) 时,您是否看到任何错误? 404, Blocked request, 还是 JSON 格式错误?
  • 我解决了。感谢您指出有一个控制台,我发现我必须将完整路径放入 JSON 文件。
  • 太棒了!好吧,您不必必须(我经常不这样做),但您必须确保路径正确。
猜你喜欢
  • 1970-01-01
  • 2011-08-22
  • 2012-09-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
相关资源
最近更新 更多