@Alphonso77: > I know this has to do with variable scope...
I doubt it. The code you've quoted will (or rather, would) create/ assign to a global variable provided `myGlobalVariable` isn't declared as a var within some containing function, which I assume it isn't. A couple of thoughts: 1. Bug - typo? There's a bug in the quoted code: function stakeholderModel(strDataNeeded){ new Ajax.Request('file_name.php'), // ^--- here {onSuccess: function(response) { globalVariable = response.responseXML }, parameters: {parm1: parmValue} }); } Note the closing parenthesis after your URL, which means that none of the rest of the stuff is getting passed into the `Ajax.Request` constructor. You should be seeing a syntax error in your debugger, because eventually there's a syntax error (the closing parenthesis on the }); line is unmatched. 2. If the bug above is just a typo in your post (*why* do people retype when there's the beauty of copy and paste??), then I'm guessing you're thinking of the ajax call as synchronous, e.g.: stakeholderModule(someData); if (myGlobalVariable == somevalue) { // ... } That won't work, because ajax requests are *asynchronous* by default. So `stakeholderModule` gets run, which *queues* the request, but the request doesn't complete until some time later, long after (in computer terms) you've already checked `myGlobalVariable`. It's possible to make ajax requests synchronous (there's an option for it, see the docs), but it's a very bad idea. Synchronous requests completely lock up the UI of many browsers for the entire duration of the request, which leads to a poor user experience. Instead, modify your logic so that whatever you were doing after calling `stakeholderModule` you do from the `onSuccess` function. So instead of: stakeHolderModule(someData); doThis(); doThat(); doTheOther(); it's stakeHolderModule(someData, function() { doThis(); doThat(); doTheOther(); }); ...where `stakeholderModule` looks like this: function stakeholderModel(strDataNeeded, callback){ new Ajax.Request('file_name.php', { onSuccess: function(response) { globalVariable = response.responseXML; callback(); }, parameters: {parm1: parmValue} }); } @Walter: > I don't think it's enough to declare it global just by leaving off the > var keyword when you're already inside an anonymous function. It is, provided the symbol isn't in scope (e.g., declared as a var) anywhere. It's the Horror of Implicit Globals[1], and it's a very bad idea to rely on it. [1] http://blog.niftysnippets.org/2008/03/horror-of-implicit-globals.html HTH, -- T.J. Crowder Independent Software Engineer tj / crowder software / com www / crowder software / com On Mar 17, 12:16 pm, Walter Lee Davis <wa...@wdstudio.com> wrote: > Did you try defining the variable in the global scope first? Something > like this: > > var myGlobalVariable > > function stakeHolderModule(strDataNeeded){ > new Ajax.Request('foo',{parameters:{bar:baz}, > onSuccess: function(response){ > myGlobalVariable = response.responseXML; > } > }); > > } > > I don't think it's enough to declare it global just by leaving off the > var keyword when you're already inside an anonymous function. > > Walter > > On Mar 16, 2011, at 8:30 AM, Alphonso77 wrote: > > > > > > > > > I'm trying to either return a value or set a global variable from > > within a function run on the onSuccess event. I've tried defining an > > inline function and setting a global variable, returning a value, and > > even defining a separate function that gets called. The problem is > > that the variable is getting erased outside of the function holding > > the new Ajax.request object. > > > I know this has to do with variable scope, but I'm running out of > > ideas on how to make the value of my response.responseXML available to > > functions outside of the one creating the new Ajax.request. Any help > > you could provide would be greatly appreciated. Here is my code: > > > function stakeholderModel(strDataNeeded){ > > new Ajax.Request('file_name.php'), > > {onSuccess: function(response) { > > globalVariable = response.responseXML > > }, > > parameters: {parm1: parmValue} > > }); > > } > > > -- > > You received this message because you are subscribed to the Google > > Groups "Prototype & script.aculo.us" group. > > To post to this group, send email to > > prototype-scriptaculous@googlegroups.com > > . > > To unsubscribe from this group, send email to > > prototype-scriptaculous+unsubscr...@googlegroups.com > > . > > For more options, visit this group > > athttp://groups.google.com/group/prototype-scriptaculous?hl=en > > . -- You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com. To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en.