.getJSON 不会执行输入

.getJSON won't execute for input

我有 2 个部分

我认为 if(navigator.geolocation) 不会检查是否已授予权限,只会检查地理位置是否与浏览器兼容。

第 1 节中的这一行 $.getJSON(address, function(data) 不像第 2 节中那样执行。如果我将 `console.log(address) 放在它前面,它会显示,但在 .getJSON 内部它没有的范围。

由于功能相同,所以对发生的事情感到困惑。

$(document).ready(function() {
  //GET STUFF FUNCTION
  function getStuff(address) {
    api = address; //**EDIT** changed to address
    console.log("clicking or entering works yes");
    $.getJSON(api, function(data) {
      console.log("yay it works");
    });
  };
  // SECTION 1
  $("#searchForm").submit(function(e) {
    var searchInput = $("#searchInput").val();
    var address = "api.openweathermap.org/data/2.5/weather?q=" + searchInput + "&appid=?";

    e.preventDefault();
    getStuff(address);

  });

  $("#searchInput").keypress(function(e) {
    if (e.which == 13) {
      $("#searchBtn").click();
    };
  });

  //SECTION 2
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      lat = position.coords.latitude;
      lon = position.coords.longitude;

      var address = 'http://api.openweathermap.org/data/2.5/weather?lat=' + lat + '&lon=' + lon + '&appid=?';

      //tried to use this function for search
      getStuff(address);
    });

我尽我所能将其缩小,我不确定如何在 fiddle 上执行 AJAX 请求。 edit:updatehttps://jsfiddle.net/mq10ps5c/10/

谢谢大家,非常感谢任何批评

在第 1 节和第 2 节中设置地址,然后在这个 GetStuff 函数中调用 GetStuff 您没有引用地址,而是引用 api

将您的 GetStuff 函数更改为以下内容:

function getStuff(address) {
 api = address == null ? "/echo/JSON/" : address;
 console.log("clicking or entering works yes");
 $.getJSON(api, function(data) {
  console.log("yay it works");
 });
};

首先检查地址是否为空,如果是,则将 api 设置为“/echo/JSON/”,否则将 api 设置为 address 值。