我有两个部分


在第一部分中,我想从用户那里获取位置输入。这是.getJSON不执行的地方。
第二部分,我检查地理定位是否与浏览器兼容,如果获得许可,则执行.getJSON。这个很好用。


我认为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);
    });


我已尽力将其缩小,我不确定如何在小提琴中执行AJAX请求。
编辑:更新https://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");
 });
};


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

关于javascript - .getJSON将不会为输入执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41233010/

10-13 01:52