javascript - getJSON 响应出现问题

标签 javascript jquery getjson

我在 Chrome 中遇到 $.getJSON 响应问题

查询是

$.getJSON("http://www.askgeo.com/api/428014/sf2t36ujv1tsf325t5734gstr4/timezone.json?callback=?&points=55.77184,37.623553",
    function(json){
        <some code>
    }
);

如果您点击此链接,您将获得一个 json 文本。

当我运行此查询时,Chrome 显示错误:

资源解释为脚本,但使用 MIME 类型 application/json 传输

语法错误:意外的标记:timezone.json:1

它是否尝试将 json 响应转换为 JavaScript 对象?如果是这样为什么它不能这样做?有什么办法可以解决这个问题吗?

在 Chrome 调试器中,我找到了包含以下内容的文件“timezone.json”:

{"code":0,"message":"ok","data":[{"timeZone":"Europe/Moscow","currentOffsetMs":14400000,"latitude":55.77184,"longitude":37.623553}]}

最佳答案

您请求数据的服务器未设置为返回 JSONP。因此,您需要构建某种代理来为您获取数据,或者使用 YQL。

编辑:

如果您要使用 YQL,这是您将使用的网址:

http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20json%20WHERE%20url%3D%22http%3A%2F%2Fwww.askgeo.com%2Fapi%2F428014%2Fsf2t36ujv1tsf325t5734gstr4%2Ftimezone.json%3Fpoints%3D55.77184%2C37.623553%22&format=json&diagnostics=true

有关如何生成该 URL 的信息,请访问:

http://developer.yahoo.com/yql/console/#h=SELECT%20*%20FROM%20json%20WHERE%20url%3D%22http%3A//www.askgeo.com/api/428014/sf2t36ujv1tsf325t5734gstr4/timezone.json%3Fpoints%3D55.77184%2C37.623553%22

您可以在底部找到该网址。

使用 YQL 进行拨弄:http://jsfiddle.net/JGwU3/1/

然而,使用 YQL 有一个怪癖。如果结果仅包含一个结果,则其内容是一个对象,但是,如果是多个结果,则其内容将是一个数组。您可以通过 console.logging 响应来查看差异。

关于javascript - getJSON 响应出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7521431/

相关文章:

javascript - 表单数据不会在保存时进入解析表

javascript - jQuery focus() 不会将光标带入输入字段

php - getJSON 和 session_regenerate_id()

JavaScript 替换正则表达式 :(

javascript - 在服务中保存值后 undefined variable (AngularJS)

jquery - 简单的 CSS/HTML 菜单链接不起作用

jquery getJSON/ajax 没有从 REST 服务得到响应

javascript - 在 Angular2 应用程序中使用 angular2-websocket 关闭时如何重新连接 websocket 连接?

javascript - Internet Explorer 7/8 和窗口函数是空对象

javascript - 加载本地json文件并将结果分配给变量