.getJSON不会执行输入

时间:2016-12-20 00:12:15

标签: javascript jquery json navigator

我有两个部分

  • 第一部分,我想从用户那里获取位置输入。这是.getJSON不执行的地方。
  • 第二部分,我检查geolocation是否与浏览器兼容,如果给出了权限,则执行.getJSON。这个工作得很好。

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

第1节$.getJSON(address, function(data)中的这一行不像第2节那样执行。如果我把`console.log(地址)放在它之前,它会显示,但在.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 个答案:

答案 0 :(得分:1)

在第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值。