Monday, January 23, 2012

Re: redirect doesn't work when controller function is called from JS-function

wow. thanks a lot. i really appreciate it !!!
i will use this one ;)

but just to make sure i make things better next time. how would you
code this?

would you check for a complete form in the controller or in the view
via JS like I did? what make more sense? I chose JS cause it felt
easier to pop messages ("please fill out...") without directing to a
new page (like the redirect and then setFlash)..the "ajax feeling"...

i have a feeling that I made the poorer choice here...

thanks :)

On 22 Jan., 23:29, Tilen Majerle <tilen.maje...@gmail.com> wrote:
> now i modified you function save in js with Miles's advice
>
> Code in link below:http://bin.cakephp.org/view/1265623686
>
> --
> Lep pozdrav, Tilen Majerlehttp://majerle.eu
>
> 2012/1/22 Tomfox Wiranata <tomfox.wiran...@gmail.com>
>
>
>
> > first of all zhx to both of you
> > to be honest i have no clue if its post or ajax.
>
> > hmm, not sure if i get tilens advice.....so i gotta do router::url in
> > controller or ise location.href in js?
>
> > On Jan 22, 9:51 pm, Miles J <mileswjohn...@gmail.com> wrote:
> > > Well if it is an AJAX call, just do a redirect in the JS within the
> > > response.
>
> > > location.href = newUrl;
>
> > > Or
>
> > > location.reload(true);
>
> > > To refresh the current page.
>
> > > On Jan 22, 10:10 am, Tilen Majerle <tilen.maje...@gmail.com> wrote:
>
> > > > you are calling POST call via AJAX request, so, you can't use
> > > > $this->redirect() in controller
> > > > from controller method check if was ajax call, if it was, print code
> > below
> > > > in controller:
>
> > > > <meta http-equiv="refresh" content="0;url=<?php print
> > > > Router::url($yourUrlArray, true); ?>" />
>
> > > > and after print this, use exit or die;
>
> > > > what will this do:
> > > > this will print this meta tag which will redirect with browser to your
> > new
> > > > url, you have to modify your javascript post method, that will handle
> > > > result and display it in browser :)
>
> > > > <meta http-equiv="refresh" content="0;url=*NEW PAGE URL*" />
>
> > > > --
> > > > Lep pozdrav, Tilen Majerlehttp://majerle.eu
>
> > > > 2012/1/22 Tomfox Wiranata <tomfox.wiran...@gmail.com>
>
> > > > > Hi everyone,
>
> > > > > I have used redirect a thousand times successfully. but this one is
> > > > > weird.
> > > > > This is my process. User wants to save his data and the system checks
> > > > > if all necessary field are filled out. if so, save the data. if not,
> > > > > give an JS-alert.
>
> > > > > the whole thing works. the alert when data is missing
> > > > > and
> > > > > the saving when the form is complete. cake just wont redirect after
> > > > > saving. here is my code:
>
> > > > > the trigger in my view (the button)
> > > > > ========================
>
> > > > > echo '<div class="small_button" onclick="save()"
> > > > > style="float:left;cursor:pointer;">'."Save".'</div>';
>
> > > > > javascript function in my view:
> > > > > ========================
>
> > > > > function save()
> > > > > {
> > > > >        var title_content = $('#TitlePopup').val();
>
> > > > >        if (!title_content)
> > > > >                $.pnotify({     pnotify_title: 'Missing Fields.',
> > > > > pnotify_text: 'Please
> > > > > fill out all fields.'});
> > > > >        else
> > > > >                $.post(installFolder + 'books/save', {});
>
> > > > > }
>
> > > > > books_controller:
> > > > > ========================
>
> > > > > function save()
> > > > > {
>
> > > > > ...some code here for saving the data....
>
> > > > > $this->Session->setFlash('saving successful');
> > > > > $this->redirect(array('controller' => 'books', 'action' => 'view',
> > > > > $id));
>
> > > > > }
>
> > > > > the redirect works(!) when i call the controllers save() function
> > > > > directly like:
> > > > > echo $html->link('Save', '/books/save',
> > > > > array('class'=>'small_button'));
>
> > > > > is this some technology thing with no workaround possible? like JS
> > and
> > > > > cakePHP wont work together in this case? or am i missing some
> > > > > fundamentals here?
>
> > > > > appreciate your help :)
>
> > > > > thanks!!
>
> > > > > --
> > > > > Our newest site for the community: CakePHP Video Tutorials
> > > > >http://tv.cakephp.org
> > > > > Check out the new CakePHP Questions sitehttp://ask.cakephp.organdhelp
> > > > > others with their CakePHP related questions.
>
> > > > > To unsubscribe from this group, send email to
> > > > > cake-php+unsubscribe@googlegroups.com For more options, visit this
> > group
> > > > > athttp://groups.google.com/group/cake-php
>
> > --
> > Our newest site for the community: CakePHP Video Tutorials
> >http://tv.cakephp.org
> > Check out the new CakePHP Questions sitehttp://ask.cakephp.organd help
> > others with their CakePHP related questions.
>
> > To unsubscribe from this group, send email to
> > cake-php+unsubscribe@googlegroups.com For more options, visit this group
> > athttp://groups.google.com/group/cake-php- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: