Find the parts in the returned html chunk.
success: function (html) {
// wrap the returned html, JQuery requires this step.
var $html = $('<html />').html(html);
// Replace the record
$record.replaceWith($html);
// Show message to user
var $message = $html.find('#flashMessage');
$message.show();
}
Nothing changes, no need to send back Json or anything. It just works.
Although I do send back a JSON object when necessary, but for the most part
I use this technique and it works well.
On Sunday, May 26, 2013 6:26:19 PM UTC+10, advantage+ wrote:
>
> But with that JS you show no response type.
>
>
>
> Success? Did it do what it was intended? No message, no alert nothing. If
> you sent a form did it save? Any error messages for the user?
>
>
>
> This is a much better way::
>
>
>
> *function *sendData*(*sel*){*
>
> *var *$form = $*(*sel*)*;
>
> $*(*sel*)*.submit*(function(*e*) {*
>
> * *e.preventDefault*()*;
>
>
>
> $.ajax*({*
>
> * *type: "POST",
>
> url: $*(*sel*)*.attr*(*'action'*)*,
>
> data: $*(*sel*)*.formSerialize*()*,
>
> dataType: 'json',
>
>
>
> error: *function(*response,error*) {*
>
> * if (*error == "timeout"*) {*
>
> * *$*(*'div#backdata'*)*.unblock*()*;
>
> serverTimeout*()*;
>
> *}*
>
> * }*,
>
>
>
> success: *function(*r*){*
>
> * *$*(*'#backdata'*)*.html*(*r.html*)*;
>
>
>
> *if (*r.status === *true) {*
>
> * *successMessage*(*r.message*)*;
>
> *} else {*
>
> * *failureMessage*(*r.message*)*;
>
> *}*
>
> *}*
>
> * })*;
>
> *return false*;
>
> *})*;
>
> *}*;
>
>
>
> And I have cake create the array of info $response = array('message' =>
> Good stuff it saved, 'html' => grab my view / element whatever…., 'status'
> => true, anything else you want to add.)
>
>
>
> And just server it up as a json response and presto!
>
>
>
> *From:* [email protected] <javascript:> [mailto:
> [email protected] <javascript:>] *On Behalf Of *Leigh Mackay
> *Sent:* Sunday, May 26, 2013 2:32 AM
> *To:* [email protected] <javascript:>
> *Subject:* Re: Cakephp Ajax helper or Jquery?
>
>
>
> Hi Sam,
>
>
>
> Progressive enhancement is a very elegant solution for Ajax and UI.
>
>
>
> Build your app without any Ajax/JavaScript. Use the app controllers before
> filter to change the layout on ajax requests.
>
>
>
> public function beforeFilter() {
>
>
>
> if ($this->request->is('ajax')) {
>
> $this->disableCache();
>
> $this->layout = 'ajax';
>
> }
>
>
>
> }
>
>
>
> Ajax requests end up looking something like this.
>
>
>
> $.ajax({
>
> data: $form.serialize(),
>
> method: 'POST',
>
> dataType: 'html',
>
> url: $form.attr('action'),
>
> success: function (html) {
>
> var $html = $('<html />').html(html);
>
> // do whatever you want with the returned chunk of html
>
> // example: grab the flash message and fade it in
>
> // make a chicken titty dance
>
> }
>
> });
>
>
>
>
>
> Used to-do ajax similar to the Rails convention by sending JavaScript to
> the browser from a separate view template. Most people find progressive
> enhancement so much easier to maintain and it makes front end people happy.
>
>
>
> Another tip is to attach your JavaScript handlers to html5 data attributes
> instead of css selectors. It's another separation and makes things even
> easier to maintain.
>
>
>
> Leigh
>
>
>
>
> On Friday, May 24, 2013 7:21:45 PM UTC+10, Sam wrote:
>
> Hi Cakephp experts,
>
>
>
> I would like to try out Ajax. May I know what are the pros and cons of
> Cakephp Ajax helper and Jquery? I have never touched ajax and would like to
> know which is a better choice as a start. Thank you very much.
>
> --
> Like Us on FaceBook https://www.facebook.com/CakePHP
> Find us on Twitter http://twitter.com/CakePHP
>
> ---
> You received this message because you are subscribed to the Google Groups
> "CakePHP" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> Visit this group at http://groups.google.com/group/cake-php?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.