yes i did it the same way, somebody with javascript knowledge would be
really helpful, just to know if fetching the header from the iframe is
possible

On Oct 25, 11:23 am, scausten <scaus...@gmail.com> wrote:
> I've had some success with a very simple workaround for web2py-
> component-command. In the form.accepts in my SQLFORM, I set a variable
> 'command', return it, and then in my component's view simply put
>
> {{if command:}}
> <script>
>     $(document).ready(function(){
>         eval({{=command}});
>     });
> </script>
> {{pass}}
>
> It's ugly, but it seems to work ok for simple stuff...
>
> On Oct 25, 9:37 am, scausten <scaus...@gmail.com> wrote:
>
>
>
> > Another bump - has anyone had any further thoughts on how to get
> > web2py-component-command or web2py-component-flash working with this
> > code?
>
> > On Oct 13, 1:38 pm, selecta <gr...@delarue-berlin.de> wrote:
>
> > > *bump*
> > > sinceuploadforms do not work in web2py components anyway this code
> > > could be integrated into web2py without the ajaxForm script itself
>
> > > On Oct 11, 1:35 pm, selecta <gr...@delarue-berlin.de> wrote:
>
> > > > as I posted before I am trying to fix the issue ofajaxuploads
>
> > > > The problem:
> > > >uploadfields do not work inajaxloaded components
>
> > > > The solution:
> > > > modify web2py_ajax.html
> > > > on the top add
> > > > response.files.insert(3,URL(r=request,c='static/
> > > > js',f='jquery.form.js'))
> > > > a bit below change the code to
>
> > > > function web2py_trap_form(action,target) {
> > > >    jQuery('#'+target+' form').each(function(i){
> > > >       var form=jQuery(this);
> > > >       if(!form.hasClass('no_trap')){
> > > >          if(form.find('.upload').length>0){
> > > >             //using ajaxForm has the disadvantage that the header is
> > > > not returned in xhr
> > > >             //can this be fixed in the ajaxForm plugin???
> > > >              form.ajaxForm({
> > > >                 url: action,
> > > >                 success: function(data, statusText, xhr) {
> > > >                     complete_web2py_ajax_page(xhr, data, action,
> > > > target)
> > > >                 }
> > > >              });
> > > >          }else{
> > > >             form.submit(function(obj){
> > > >              jQuery('.flash').hide().html('');
> > > >              web2py_ajax_page('post',action,form.serialize(),target);
> > > >              return false;
> > > >             });
> > > >          }
>
> > > >       }
> > > >    });}
>
> > > > function complete_web2py_ajax_page (xhr, text, action, target){
> > > >       var html=xhr.responseText;
> > > >       var content=xhr.getResponseHeader('web2py-component-content');
> > > >       var command=xhr.getResponseHeader('web2py-component-command');
> > > >       var flash=xhr.getResponseHeader('web2py-component-flash');
> > > >       var t = jQuery('#'+target);
> > > >       if(content=='prepend') t.prepend(html);
> > > >       else if(content=='append') t.append(html);
> > > >       else if(content!='hide') t.html(html);
> > > >       web2py_trap_form(action,target);
> > > >       web2py_ajax_init();
> > > >       if(command) eval(command);
> > > >       if(flash) jQuery('.flash').html(flash).slideDown();}
>
> > > > function web2py_ajax_page(method,action,data,target) {
> > > >   jQuery.ajax({'type':method,'url':action,'data':data,
> > > >     'beforeSend':function(xhr) {
> > > >       xhr.setRequestHeader('web2py-component-
> > > > location',document.location);
> > > >       xhr.setRequestHeader('web2py-component-element',target);},
> > > >     'complete':function(xhr,text){
> > > >         complete_web2py_ajax_page(xhr, text, action, target);
> > > >       }
> > > >     });
>
> > > > }
>
> > > > however this still has a problem
> > > > if there is anuploadfield it will use ajaxForm which does some
> > > > iFrame magic to upland the uploads. by doing this it will loose the
> > > > response header and thus web2py-component-command and web2py-component-
> > > > flash ...
> > > > you can fix the flash by using
> > > > session.flash (?not sure if this is true but I think it worked)
> > > > and write the component-command directly into the returned HTML
>
> > > > it would be nice if the header could be reconstructed by the ajaxform
> > > > pluginhttp://github.com/malsup/form/blob/master/jquery.form.js
> > > > somewhere around line 354 the dummy header object is constructed
> > > > I have no clue if retrieving the header and rebuilding it is even
> > > > possible because my js knowledge is still quite limited ... maybe
> > > > somebody could help me out here and tell me if it is possible or not

Reply via email to