[Cartoweb-users] trouble between ajax and sent header

Oliver Christen oliver.christen at camptocamp.com
Wed Apr 16 01:56:50 EDT 2008


Well, non-paid development are usualy last in priority, we do some when we 
are not working on some project, but it doesnt happen very often. Dont 
expect it any time soon.

About your code, what is the javascript call you do on your onclick ?


> Hi Oliver,
> yes, this is the good way, and I started to study and build it up , 
> anyway,
> sorry for the request, is it possible for your team to develope this 
> feature
> too,for three reasons ?
> So it could be used bby other users too.
> I've developed a number of plug-ins but I don't like the idea to change by
> me the internal structure of cartoweb, I did yet it, and updating my 
> system
> becomes more and more slow,
> the last one consists on I'm not good at ajax :)(
> Just for the moment could you give me more info about overrding the 
> function
> ?
>
> AjaxHandler.doAction = function(actionId,
> { ...(see above)... } *should* work.
>
> What is the actionId I've to intercept ? In this way If I performe the
> action of downloading a file I should "stop"  ajax only for this action .
> In my pluIn there is a button to download a file, I've to do this on the
> event onClick= ?
> I'm a bit confused ...
>
> Thanks in advance and best regards
>
> Giu
>
>
>
> --------- Original Message --------
> Da: Oliver Christen <oliver.christen at camptocamp.com>
> To:
>         Cc: cartoweb-users at lists.maptools.org
> Oggetto: Re: [Cartoweb-users] trouble between ajax and sent header
> Data: 15/04/08 08:38
>
> >
>>
>>
>> Indeed, I havent thought about an action trigered via ajax.
>> Sadely the current ajax implementation do not handle mid-course canceling
> of
>> the action.
>> The thing to do would be to modify a bit the actionRequest function in
>> AjaxHandler.js so the new Ajax.Request call implement an "onLoaded" event
>> which would allow you to interrupt the treatment after the request was
> sent.
>> But the documentation of the prototype library
>> (http://www.prototypejs.org/api/ajax/request) state the "onLoaded" event
> may
>> not be supported by all browser. A less "clean" way would be to use the
>> "onFailure" event which seems to be supported by all browser.
>>
>> something like this:
>>
>> cancelActionFlag: false,
>> cancelAction: function() {
>>   this.cancelActionFlag = true;
>> },
>> ... (existing code) ...
>> doAction: function(actionId, argObject) {
>>   ... (existing code) ...
>>     var myAjax = new Ajax.Request(url,
>>             {method: 'post', postBody: queryObject.post,
>>              onComplete: function(response) {
>>              ... (existing code) ...
>>              }
>>              onLoaded: function() {
>>                 if (cancelActionFlag) {
>>                   Logger.header('--- Action '+ actionId +' 
>> canceled ---');
>>                   return true;
>>                 }
>>              }
>>              onFailure: function() {
>>                 if (cancelActionFlag) {
>>                   Logger.header('--- Action '+ actionId +' 
>> canceled ---');
>>                   return true;
>>                 }
>>              }
>>     });
>> },
>>
>> and invoque AjaxHandler.cancelAction(); from the buildPostRequest of the
>> ajax code of the plugin that triggered the ajax query
>>
>> This is untested but you should get the idea.
>>
>> By the way, one should be able to override any core ajax function by
> simply
>> redefining the modified function in an new .js file loaded AFTER the main
>> .js file (so puting it at the end of the <head> in the template should do
>> the trick)
>> In this case, I presume a AjaxHandler.doAction = function(actionId,
>> argObject) { ...(see above)... } *should* work.
>>
>> regards
>> Oliver
>>
>>
>> > Hi Oliver,
>> > I think that sending an output by using the header and then using the
>> > instructions
>> > readfile();
>> > exit;
>> > is not a compliant way if there is ajax. It's a case "similar" to my
>> > previous (but solved) problem when I sent an echo.
>> > In this case there is something pending.
>> >
>> > The output is sent before the normal output of the plugIn. Even if 
>> > after
>
>> > the
>> > instructions :
>> > header()
>> > readfile
>> > exit
>> >
>> > there is the normal output of the plugIn, nothing is returned to the
>> > client.
>> >
>> > Is there a way in order to force the re-sending of the template assign 
>> > ?
>
>> > or
>> > is there something like flush or similar to end the session in a 
>> > correct
>
>> > way
>> > ?
>> > This is the first time I use header but by reading on the Internet it 
>> > is
>
>> > not
>> > free from problem.
>> > I want to use this system so I can stop any direct access to the
> direcory.
>> >
>> > Please, any advice is welcome.
>> >
>> > Thanks and best regards
>> >
>> > Giu
>> >
>> >
>> >
>> >
>> >
>> > --------- Original Message --------
>> > Da: Oliver Christen <oliver.christen at camptocamp.com>
>> > To: cartoweb-users at lists.maptools.org
> <cartoweb-users at lists.maptools.org>
>> > Oggetto: Re: [Cartoweb-users] trouble between ajax and sent header
>> > Data: 14/04/08 08:33
>> >
>> > >
>> >>
>> >>
>> >> a frozen map is usualy the result of javascript error, do you have 
>> >> any?
>> >>
>> >>
>> >>
>> >> >
>> >> > Hi,
>> >> > in order to download a file I've used the header way, that is :
>> >> >
>> >> >            header('Content-Description: File Transfer');
>> >> >            header('Content-Type: application/octet-stream');
>> >> >            header('Content-Disposition: attachment;
>> >> > filename='.basename($file));
>> >> >            header('Content-Transfer-Encoding: binary');
>> >> >            header('Expires: 0');
>> >> >            header('Cache-Control: must-revalidate, post-check=0,
>> >> > pre-check=0');
>> >> >            header('Pragma: public');
>> >> >            header('Content-Length: ' . filesize($file));
>> >> >
>> >> > the download is ok, but after chosing every button in download
> dialog,
>> > the
>> >> > map is totally freezed , then if I push any button external to the
> map,
>> >> > for
>> >> > example the rows which move the map a bit at south,north east etc,
> the
>> > map
>> >> > has been unfreezed.
>> >> >
>> >> > A solution could be a reload the page after saving the file, but how
>> >> > can
>> > I
>> >> > perform this ?
>> >> > Is there a way to send the correct header after the first one ?
>> >> >
>> >> > I've used IE 6.0.
>> >> >
>> >> > THanks in advace
>> >> >
>> >> > Please, help it's urgent
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Email.it, the professional e-mail, gratis per te:
> http://www.email.it/f
>> >> >
>> >> > Sponsor:
>> >> > Scopri le tue passioni con Leonardo.it!
>> >> >
>> >> > Clicca qui:
> http://adv.email.it/cgi-bin/foclick.cgi?mid=7653&d=20080413
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > Cartoweb-users mailing list
>> >> > Cartoweb-users at lists.maptools.org
>> >> > http://lists.maptools.org/mailman/listinfo/cartoweb-users
>> >> >
>> >>
>> >>
>> >>
>> >>
>> > --
>> > Email.it, the professional e-mail, gratis per te: http://www.email.it/f
>> >
>> > Sponsor:
>> > Una BMW Z4 Roadster a 10?? Prova gratis su Bidplaza.it!
>> >
>> > Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=7673&d=20080414
>> >
>> >
>> >
>>
>>
>>
>>
> --
> Email.it, the professional e-mail, gratis per te: http://www.email.it/f
>
> Sponsor:
> Offerta SKY a 15 ? al mese: vedi tutto quello che vuoi tra Mondo, Cinema,
> Sport e Calcio.
> Solo con SKY puoi avere così tanto per così poco!
> Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=7778&d=20080415
>
>
> 



More information about the Cartoweb-users mailing list