2016-12-20 3 views
1

J'ai 2 sections.getJSON ne sera pas exécuté pour l'entrée

  • La première section, je veux obtenir des commentaires de l'emplacement de l'utilisateur. C'est là que .getJSON ne s'exécute pas.
  • La seconde section, je vérifie si la géolocalisation est compatible avec le navigateur, et si la permission est donnée, .getJSON s'exécute. Celui-ci fonctionne très bien.

Je ne pense pas if(navigator.geolocation) vérifie si la permission a été accordée, seulement que la géolocalisation est compatible avec le navigateur.

Cette ligne de la section 1 $.getJSON(address, function(data) ne s'exécute pas comme dans la section 2. Si je place `console.log (adresse) juste avant, cela apparaît, mais pas dans la portée .getJSON. Confondu quant à ce qui se passe puisque les fonctions sont identiques.

$(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); 
    }); 

J'ai essayé de réduire au minimum ce que je pouvais, je ne suis pas sûr de savoir comment faire des requêtes AJAX sur un violon. edit: mise à jour https://jsfiddle.net/mq10ps5c/10/

Merci à tous, et les critiques sont très appréciées

+2

Pourquoi une URL a-t-elle http: // et l'autre pas? – epascarello

+0

Merci Merci! C'était le problème, je suis totalement embarrassée, mais merci – Danny

Répondre

1

intérieur Section 1 et 2 vous définissez l'adresse puis appelez GetStuff dans cette fonction GetStuff vous n'êtes pas référence à l'adresse, au lieu que vous la référence api

Changer votre fonction GetStuff au-dessous:

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"); 
}); 
}; 

première vérification pour voir si l'adresse est nulle si ainsi mis api à "/ echo/JSON /" autrement mis api à address valeur.

+0

Mon erreur, j'essayais d'obtenir la requête AJAX de travailler avec le violon avant, il était réglé à l'adresse, la section d'entrée ne fonctionne toujours pas mais la section navigateur fait – Danny

+0

J'ai corrigé le problème, j'avais une erreur de syntaxe très simple avec l'url, je n'ai pas ajouté 'http: //' avant l'adresse. Merci de m'avoir montré comment/echo/JSON/fonctionne. – Danny