$.getJson 失败,尽管 weatherapp 链接正常工作

Posted

技术标签:

【中文标题】$.getJson 失败,尽管 weatherapp 链接正常工作【英文标题】:$.getJson fails although the weatherapp link works correctly 【发布时间】:2016-06-13 19:36:18 【问题描述】:

我正在https://www.freecodecamp.com/challenges/show-the-local-weather做这个项目

如果您需要,我的完整项目在这里:https://codepen.io/tugrulz/pen/beEmJb?editors=0010

function fetchWeather() 

  var ap = "http://api.openweathermap.org/data/2.5/weather?";
  var key = "&appid=061f24cf3cde2f60644a8240302983f2";
  var lat = "35";
  var lon = "139";
  var api = ap + "lat=" + lat + "&lon=" + lon + key;

  $(".location").html(api);

$.getJSON(api, function(data) 
      alert("sa");
      $(".location").html("oldu mu?");
    )
   .done(function() 
    alert( "second success" );
  )
  .fail(function(error) 
    alert( error );

  )
  .always(function() 
    alert( "complete" );
  );

打印:http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=061f24cf3cde2f60644a8240302983f2

问题是,我打印的链接在 chrome 中正确工作,但 getJSON 不起作用。它的失败功能有效。

我该怎么办? 知道如何打印错误消息吗?打印(错误);没有帮助。既不是涉及 getJson 的 try and catch 语句。

【问题讨论】:

你确定你打电话给fetchWeather()。看看这个CodePen。它基本上是您的代码,我将响应名称写入 div。所以它起作用了。 是的,我这样做了,但它处于就绪状态,我使用引导程序,但当我更改它们时,这些都没有改变。有趣的。我会用你的作为模板,但我仍然很好奇项目之间有什么区别。 我真的不知道我们的两个版本有什么区别。我更新了我的笔,将fetchWeather() 调用包含在$(document).ready() 中,它仍然有效。 【参考方案1】:

我运行了你的 codepen 项目,在我的控制台中我得到了错误

The page at 'https://codepen.io/tugrulz/pen/beEmJb?editors=0011' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=061f24cf3cde2f60644a8240302983f2'. This request has been blocked; the content must be served over HTTPS.

Codepen 阻止了 api,因为它不是https 地址。它没有打印错误,因为请求甚至从未发送到气象服务。

【讨论】:

以上是关于$.getJson 失败,尽管 weatherapp 链接正常工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥 $.getJSON 静默失败?

jQuery $.getJSON() 失败

getJSON 请求失败

FindResource() 函数失败,尽管资源存在

尽管验证失败,但尝试序列化对象

颤振:在 BLoC 中,事件比较失败,尽管使用 equatbale