FWIW, you should be using response.responseJSON and setting the
sanitizeJSON option of your ajax request to true.

Would avoid evaluating the json object twice!

Best,

Tobie

note: you'll need to set the mime-type of the response to 'application/
json' or the evalJSON option to 'force'

On Nov 19, 2:05 am, kangax <[EMAIL PROTECTED]> wrote:
> On Nov 18, 6:48 pm, laf <[EMAIL PROTECTED]> wrote:
>
>
>
> > So I have this function. It toggles error messages after an AJAX call
> > for validation. It works fine in prototype 1.5,
> > but an upgrade to 1.6 has broken it and I have not been able to work
> > out why.
>
> >     onFormSuccess : function(transport)
> >     {
> >         var json = transport.responseText.evalJSON(true);
> >         var errors = $H(json.errors);
>
> >         if (errors.size() > 0) {
> >             this.form.down('.error').show();
> >             errors.each(function(pair) {
> >                 this.showError(pair.key, pair.value);
> >             }.bind(this));
> >         }
> >         else {
> >             this.form.submit();
> >         }
> >     }
>
> > When the JSON received looks like {"errors":[{"anError":
> > "aMessage"}]}, errors.size() works which means the errors are
> > displayed as they are supposed to, but when the json received looks
> > like {"errors":[]}, then errors.size() falls over as errors is an
> > undefined object.
>
> The problem is that iterating (via `each`) over a hash created from an
> array yields bunch of prototype's `Array.prototype` extras. Wouldn't
> `var errors = json.errors;` be enough? You can keep errors in a format
> of `{ name: '...', message: '...' }`:
>
> onFormSuccess : function(transport) {
>   var json = transport.responseText.evalJSON(true);
>   var errors = json.errors;
>
>   if (errors.length) {
>     this.form.down('.error').show();
>     errors.each(function(error) {
>       this.showError(error.name, error.message);
>     }, this);
>   }
>   else {
>     this.form.submit();
>   }
>
> }
>
> [...]
>
> > Regards,
> > laf.
>
> --
> kangax
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to