ok, here is an effort to sum up the code.. * function initialiseLegendLayerGroupEntry(a,b,c,d,e,f) { var x; $("#division_name").bind("click", function() { if(this.value == "sth") { y=callFunction(a,b,c,d,e,f); $.ajax({ type: "POST", url: "/serverFunction/", data: {project_name:d,layer_name:e,group_name:f}, success: function(msg){ $("#an entry point for html files that are served").after(msg); alert( $("#division where the wanted value is stored").val() ); // this alert window pops up at the end. x= $("#division where the wanted value is stored").val(); } }); alert(x); // this pop up window is always empty. it opens while i still receive "print" commands from my server script ! } }); }
I think this code is a good example of my problem. Can you identify an error somewhere? thanks, On Oct 8, 6:07 pm, MorningZ <morni...@gmail.com> wrote: > You should should the specific $.post() code in detail, there's > something you are missing.... because when you get back from the async > call, everything (global variables, page objects) are fully available > at that point... there's zero need to use setTimeout > > On Oct 8, 12:27 pm, Adonis <achrysoch...@hotmail.com> wrote: > > > Dan, > > > I used a $.ajax() call with a callback -> success: function(msg) etc. > > but still it does not work the way I want to. > > from the server side i am using, > > > * > > return render_to_response("blah.html",{ 'project_id':project_id }, > > context_instance = RequestContext(request)) > > * > > putting the project_id in a <div><input id="klain" value=project_id / > > > ></div> > > > and if the ajax call is successfull i do this, > > > * > > alert( $(#klain).val() ); > > * > > > The alert window does pop up, but after the rest of the functions in > > the code have been read. I somehow need to delay the javascript > > parsing, until the input of the division in the html that is rendered > > gets the "project_id" value. This is why i am looking into setTimeOut > > () js function. > > > cheers, > > > On Oct 8, 2:08 pm, "Dan G. Switzer, II" <dswit...@pengoworks.com> > > wrote: > > > > Adonis, > > > The $.post() function is asynchronous (by default) when your code hits a > > > $.post() call, it'll keep executing code. In order to do something with > > > the > > > results of your AJAX call, you'll want to use the callback option--which > > > is > > > a function run when the AJAX call is completed. > > > > -Dan > > > > On Thu, Oct 8, 2009 at 7:14 AM, Adonis <achrysoch...@hotmail.com> wrote: > > > > > I am not entirely sure if i am using proper definitions here, but here > > > > it goes.. > > > > > I have $.post() inside javascript functions. If ajax is successfull, > > > > it returns data from the server. I am trying to assign this data to > > > > javascript global variables. The problem is that my global javascript > > > > variables end up to be empty. It seems it takes time for the ajax to > > > > return the data and by the time the server data is returned, the > > > > browser has comploted reading through the rest of the javascript > > > > functions. Thus, leaving my global variables empty. > > > > > Do you have any suggestions on how this could be fixed? I am trying > > > > setTimeOut() at the moment but i would be glad to concider other > > > > solutions as well.. > > > > > I could provide code examples on request. > > > > > Thanks in advance!