[mapguide-users] Hooking to AJAX, code problem?

Jackie Ng jumpinjackie at gmail.com
Thu May 21 00:24:14 EDT 2009


If you use Firefox (if you aren't, why not? :-)), get the Firebug extension.
Then run that page again, and see if Firebug logs any errors in the
javascript and/or net traffic.

But just looking the code at a glance, are you accessing this page via
localhost? Most, if not all web browsers employ a same-origin policy that
prevents javascript code from manipulating DOM elements sourced from
different domains.

- Jackie


briancomeau wrote:
> 
> Hi there,
> 
> I am having trouble with the 'Hooking to AJAX' tutorial located 
> https://trac.osgeo.org/mapguide/wiki/CodeSamples/JavaScript/AJAXViewerEventHooking
> here.  Any help would be much appreciated. I have essentially just copied
> the code from the tutorial and inserted my AJAX viewer link, and yet there
> does not seem to be any functionality. For example, when I make a
> selection, nothing happens, yet an alert should be shown.
> 
> Thanks for the help!
> 
> Here is my code:
> <html>
> <head>
> <title>TEST</title>
> <script type="text/javascript">
> 
> // Map loaded handler
> function OnMapInitialized() {
>     // Map has been initialized now we're off to the races.
>     alert("Map has been initialized");
> }
> 
> window.onload = function() {
>     //Timer variable
>     var timer; 
> 
>     // This is our "watch" function. What we are doing here is 
>     // repeatedly checking the mapInit value of the Map Frame. When
>     // mapInit is true, then the map has been loaded.
>     var watch = function() {
>         
>         // What we are doing here is attempting to access the mapInit
>         // variable of the Map frame. The reason the code is in a
> try-catch
>         // is because chances are that this code access the DOM
>         // of the map frame before its DOM has been initialized.
>         try {
>             var mapFrame = viewerFrame.mapFrame;
>             if(mapFrame.mapInit) {
>  
>                 // Remove the timer so this watch function stops executing
>                 clearInterval(timer);
>                  
>                 // Call our custom handler
>                 OnMapInitialized();
>             }
>         }
>         catch(e) {
>         }
>     };
>     
>     // Start the "watching" process. We basically invoke the watch
> function 
>     // every 200ms until the map has been loaded.
>     timer = setInterval(watch, 200);
> };
> 
> //Function variable to store the original OnSelectionChanged
> var origOnSelectionChanged = null;
> 
> //Our custom selection handler
> function MySelectionHandler()
> {
>     //This is important. We don't want to replace the original function,
> rather
>     //we want to attach our code into the execution sequence. So we call
> the original
>     //function first.
>     origOnSelectionChanged();
> 
>     //Now our code goes here. For our example, we'll just show the number
> of objects selected.
>     var count = viewerFrame.GetMapFrame().GetSelectedCount();
>     alert(count + " features selected");
> }
> window.onload = function() {
>     //Timer variable
>     var timer; 
> 
>     // This is our "watch" function. What we are doing here is 
>     // repeatedly checking the mapInit value of the Map Frame. When
>     // mapInit is true, then the map has been loaded.
>     var watch = function() {
>         
>         // What we are doing here is attempting to access the mapInit
>         // variable of the Map frame. The reason the code is in a
> try-catch
>         // is because chances are that this code access the DOM
>         // of the map frame before its DOM has been initialized.
>         try {
>             var mapFrame = viewerFrame.mapFrame;
>             if(mapFrame.mapInit) {
>  
>                 // Remove the timer so this watch function stops executing
>                 clearInterval(timer);
>                  
>                 // Replace the OnSelectionChanged function with our own
> function.
>                 // It is safe to do this now because the DOM for the map
> frame is fully initialized.
>                 
>                 // Store old function
>                 origOnSelectionChanged = mapFrame.OnSelectionChanged;
>                 // Now replace with our own.
>                 mapFrame.OnSelectionChanged = MySelectionHandler;
>             }
>         }
>         catch(e) {
>         }
>     };
>     
>     // Start the "watching" process. We basically invoke the watch
> function 
>     // every 200ms until the map has been loaded.
>     timer = setInterval(watch, 200);
> };
> 
> </script>
> 
> </head>
> <frameset rows="30,*" frameborder="no" framespacing="0">
>         <frame id="titleFrame" frameborder="no" marginwidth="0"
> marginheight="0" scrolling="no" src="title.html">
>         <frame id="viewerFrame" frameborder="no" marginwidth="0"
> marginheight="0" scrolling="no"
> src="http://localhost:8008/mapguide2009/mapviewerajax/?WEBLAYOUT=Library://Samples/Layouts/BrianSamples.WebLayout&LOCALE=en">
> </frameset>
> </html>
> 

-- 
View this message in context: http://n2.nabble.com/Hooking-to-AJAX%2C-code-problem--tp2940439p2950274.html
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list