【问题标题】:getJSON external URL - output not appearing in divgetJSON 外部 URL - 输出未出现在 div 中
【发布时间】:2014-05-29 22:02:17
【问题描述】:

内容中没有出现任何内容。

jQuery(function($) {

$.getJSON('http://countdown.tfl.gov.uk/stopBoard/55191')
    .success(function(response) {
        var $content = $('#content')
            .html(response.arrivals[0].destination);

        });
});

DIV 部分:

 <div id="content"></div>

小提琴:http://jsfiddle.net/zax2n/1/

【问题讨论】:

  • XMLHttpRequest cannot load http://countdown.tfl.gov.uk/stopBoard/55191. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access. 始终检查您的控制台是否有错误。
  • 这里也回答了这个问题以及解释/示例:stackoverflow.com/a/19821851/3535297
  • 基本上你不能访问你自己服务器之外的资源,这是 web 开发中的一个已知问题(虽然有一些解决方法)。
  • 你必须使用 jsonp 或者做一个跨域请求。 Ofc 服务器必须支持其中之一。
  • 我不知道如何使用 JS 检索和操作数据。有什么例子吗?

标签: javascript html json getjson


【解决方案1】:

正如在其他 cmets 中所提到的,没有发生任何事情,因为您收到 Access-Control-Allow-Origin 标头错误。但是,有一个简单的方法可以解决这个问题:JSONP。

$.ajax("http://countdown.tfl.gov.uk/stopBoard/55191", {
    dataType: "jsonp",
    success: function(data){
        console.log(data);
    },
    error: function(data, textStatus, errorThrown){
        console.log(textStatus);
    }
});

通过通过普通的$.ajax() 方法指定您正在请求JSONP,您将获得您的JSON 对象作为响应。

看看这个updated fiddle。打开你的控制台,你会看到一切正常,但是有一个解析错误(你返回的 JSON 可能格式不正确)。

【讨论】:

  • 使用jsfiddle.net/W6new/5(您的代码的一部分)再次尝试 - 仍然没有。
  • 您在第 10 行缺少+。需要:$("body").append('&lt;div&gt;' + $routeid + $routename + '&lt;/div&gt;'); 您应该会收到警报错误。
  • 报告了格式错误的 JSON 输出。如果我使用 PHP 而不是 JS,它如何工作?
  • 我不确定,TBH。但是,既然您知道使用 ajax 获取它,那么这是一个很好的具体问题。
猜你喜欢
  • 1970-01-01
  • 2014-09-22
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 2018-10-21
相关资源
最近更新 更多