ThinkGeo.com    |     Documentation    |     Premium Support

AJAX Blocking

 I was curious how exactly the Map blocks AJAX Calls.


 


If I initiate a jquery AJAX out, then initiate a map update what happens??


If my AJAX call finishes first in the server, does it return normally? ?


 


 


If I first initiate a map update, then an AJAX call does the map queue the transmission of the AJAX out on the client?? where does it hold up the AJAX call??


 


Thanks



Hello Eric, 
  
 Ajax is just a object, once it called the server side, it will wait until the server side response, I think this is your blocks mean. 
  
 “If I initiate a jquery AJAX out, then initiate a map update what happens” 
 It’s the right way to use Ajax with MapControl, you can get anything you input from Client side then call the server, handle it in the server side, like update the map, add marker, delete feature, then response to client side, let client side know and refresh the map. 
  
 “If my AJAX call finishes first in the server, does it return normally” 
 Yes, it will works fine. 
  
 And I post some sample code in your another post that you can refer. 
  
 Regards, 
  
 Gary

Sorry, but this doesn’t answer my question.  I have noticed that if the map is updating, and I initiate another AJAX call, independent of the map update, that the second AJAX call will wait until the map updates to fire.  I was wondering where it is delayed, on the send or the return?

@Eric: I’m looking into a similar issue and I believe it may be related to using Asp.net’s Session Object.  
 msdn.microsoft.com/en-us/library/ms178581(VS.100).aspx 
  Concurrent Requests and Session State 
  
 Access to ASP.NET session state is exclusive per session, which means that if two different users make concurrent requests, access to each separate session is granted concurrently. However, if two concurrent requests are made for the same session (by using the same SessionID value), the first request gets exclusive access to the session information. The second request executes only after the first request is finished.

Thanks Muhammed, please let me know what you find.  I just know that the map updating prevents me from any other jquery AJAX activity, even non map related functions.  I believe that the jquery AJAX doesn't rely on asp session information, but perhaps it is still blocked in the same manner, because it is not specifically identified as a distinct session.



Muhammed, 
  
 I have confirmed that there is something about the presence of the map component forcing server calls to synchronously,  I don’t believe it is an ASP session issue.

Hello Eric, 
  
 I think Muhammed said is right, for validate this, you can create a c# program without map control, and try again. 
  
 Here is a workaround that you can use httphandler to handle multithread ajax call, this is the only way I know. 
  
 Try to call xxxx.axd directly in Ajax, then handle everything in the getrequest in server side. 
  
 Regards, 
  
 Gary

 I created a program without the map control and my calls ran simultaneously, I added the map control and they then didn't.



 Hello Eric,


I made a sample to test, you can have a try, in the sample, there are two buttons, one button will sleep the thread and alert "sleep" after 5 seconds, another button will alert "alert" immediately. So if it will block the call back, once you click the first button then click the second button, "alert" will be block and alert after 5 seconds, if it does not block, "alert" should alert immediately.


Let us know if there is something different between the test sample yours and ours.


Regards,


Gary



003_002_001_WebApplication1.zip (164 KB)

I will get back to you next week, I am travelling.  Thats waht I did to test also though, made two buttons, one with a sleep, one without.  and they would both come back after the sleep.

Hello Eric, 
  
 Ok, have a good trip, I will wait for your further information. 
  
 Regards, 
  
 Gary