Skip to content Skip to sidebar Skip to footer

Passing A Variable From A Callback Function To Another Function?

I am working on setting up an HTML5 GeoLocation script and I would like to store the zip code in a cookie but for now I am just trying to figure out how to pass the zip code variab

Solution 1:

You could set zip as a 'global' variable by including it outside of the function at the top of the document like so:

var zip;
...

Alternatively, you may consider defining an object at the 'global' level and using it as a namespace to store variables like so:

window.address = {};

functioncallback(json){
    address.zip = json.postalCodes[0].postalCode;
    address.country = json.postalCodes[0].countryCode;
    address.state = json.postalCodes[0].adminName1;
    address.county = json.postalCodes[0].adminName2;
    address.place = json.postalCodes[0].placeName;
}

$('#findLocation').click(function(event) {
    event.preventDefault();

    console.log(address.address);
    console.log(address.zip);
    ...
});

I hope this helps!

Solution 2:

Define var zip at very begining of code. You haven't defined it.

I haven't tried, but it should solve your problem.


Also, it seems that you forgot to define other variables in callback function as well.

Solution 3:

What I would do, is to avoid the anonymous function in the event handler, that is, create a new named function -which gives you the added benefit of traceability during debugging- and then use that function as the event handler callback:

functioneventHandlerFunction(event) {
  var zip;
  event.preventDefault();

  zip = eventHandlerFunction.zip;
  console.log(zip);
}

functioncallback(json) {
  var zip;
  zip = doSomethingWithJsonToGetTheZip();
  eventHandlerFunction.zip = zip;
}

$("#findLocation").click(eventHandlerFunction);

Or, better yet, code this as a module and then you have member encapsulation and you can share variables amongst functions without modifying the global object. You never know when another library will modify the same global member that you are using.

var yourModule = (function($) {
      var zip;

      functionretrieveZip(callback) {
        // your code
      }

      functioncallback(json) {
        // do something with json
        zip = json.zip; // or whatever
      }

      $("#findLocation").click(function(event) {
         event.preventDefault();
         console.log(zip);  // zip is visible in the parent scope + this scope
      });
   }(jQuery));

Post a Comment for "Passing A Variable From A Callback Function To Another Function?"