2016-09-26 9 views
0

jqueryでこの問題が発生しています。私のjqueryのいくつかの関数の1つがを返します。別の関数で呼び出すときに、 "Uncaught ReferenceError:curLocZipが定義されていません"が返されます。jqueryでこの問題が発生していますが、関数が定義されていないという意味で定義されています。

function curLocZip(){ 
     curZipCode = ""; 
     if (navigator.geolocation) { //Checks if browser supports geolocation 
      navigator.geolocation.watchPosition(function (position) { 
       var geocoder = new google.maps.Geocoder(); 

       var lat = position.coords.latitude; 
       var lng = position.coords.longitude; 
       var latlng = new google.maps.LatLng(lat, lng) 

       geocoder.geocode({'latLng': latlng}, function(results, status) { 
        if (status == google.maps.GeocoderStatus.OK) { 
         if (results[0]) { 
          for (i = 0; i < results[0].address_components.length; i++) { 
           if (results[0].address_components[i].types[0] == 'postal_code'){ 
            curZipCode = results[0].address_components[i].short_name; 
            break; 
           } 
          } 
         } 
        } else { 
         console.log("Geocoder failed due to: " + status); 
        } 
       });    
      }); 
     } else { 
      alert("Geolocation is not supported by this browser."); 
     } 
} 

私はそうのような別の関数でそれを呼ばれる:ここで

は、関数定義である私がいることを示すエラーを取得していますなぜ私はわからない

curLocZip(); 

curLocZip () 定義されていません。

+2

ここで、コード内に 'curLocZip'が定義されていますか?それはどこに呼ばれていますか? – Joseph

+0

a)いつどこで関数を定義しますか?b)いつどこで呼び出しますか? – Danmoreng

+0

'$(document).ready(function(){...});で' _curloczip()_(fna curLocZip)を定義しました。グローバル変数の_curloczip()_にデフォルト値を設定して関数を呼び出すと、関数が呼び出されたときに関数が実際に値を返すことに気づきました。私は今、呼び出されたときに関数が返る前にAPI処理を完了させる方法を探しています。 –

答えて

-1

ページロード時に定義し、定義する前に呼び出すことは可能です。ページがロードされた後にのみ関数呼び出しを行う必要があるため、onLoadコールバックで処理を開始したい場合があります。

+0

関数呼び出しはうまく動いているようですが、コンソールに出力した後に気付いています。問題は、API処理が完了する前に関数が返されているようです。だから、私はGoogle Maps APIの呼び出しを削除し、ちょうど良いデータセットを持つ変数を返すと、関数呼び出しはうまくいくようです。同様に: 'function curloczip(){ \t \t curZipCode =" 38104 "; \t \t return curZipCode; } ' –

関連する問題