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 -~----------~----~----~----~------~----~------~--~---