[Catalyst] Catalyst and FormBuilder vs. IExplorer 8

will trillich will.trillich at serensoft.com
Mon Oct 25 16:19:20 GMT 2010


Well this is just odd.

When Firefox, Chrome and IE6 submit files-to-upload, the structure returned
by $c->req->uploads is DIFFERENT for explorer -- it's an ARRAYREF instead of
a HASHREF:

DB<2> x $c->req->uploads
*0  HASH(0x9d04d20)*
   '*newatt[1]*' =3D> Catalyst::Request::Upload=3DHASH(0xb81a098)
      'filename' =3D> 'japh.pl'
      'headers' =3D> HTTP::Headers=3DHASH(0xb448c28)
         'content-disposition' =3D> 'form-data; name=3D"newatt[1]"; filenam=
e=3D"
japh.pl"'
         'content-type' =3D> 'text/x-perl-script'
      'size' =3D> 104
      'tempname' =3D> '/tmp/6V0Vlas5td'
      'type' =3D> 'text/x-perl-script'
   '*newatt[2]*' =3D> Catalyst::Request::Upload=3DHASH(0xb448c88)
      'filename' =3D> 'TODO'
      'headers' =3D> HTTP::Headers=3DHASH(0xb650140)
         'content-disposition' =3D> 'form-data; name=3D"newatt[3]";
filename=3D"TODO"'
         'content-type' =3D> 'application/octet-stream'
      'size' =3D> 29
      'tempname' =3D> '/tmp/2RTgotIgut'
      'type' =3D> 'application/octet-stream'

The same attempted upload for Explorer 8 looks like this instead:

*0  ARRAY(0xab06360)*
*   0*  Catalyst::Request::Upload=3DHASH(0xb448c88)
      'filename' =3D> 'japh.pl'
      'headers' =3D> HTTP::Headers=3DHASH(0xb81a098)
         'content-disposition' =3D> 'form-data; name=3D"newatt[1]"; filenam=
e=3D"
japh.pl"'
         'content-type' =3D> 'text/x-perl-script'
      'size' =3D> 104
      'tempname' =3D> '/tmp/3Tg94Iq85j'
      'type' =3D> 'text/x-perl-script'
   *1*  Catalyst::Request::Upload=3DHASH(0xb448c28)
      'filename' =3D> 'TODO'
      'headers' =3D> HTTP::Headers=3DHASH(0xb448c88)
         'content-disposition' =3D> 'form-data; name=3D"newatt[3]";
filename=3D"TODO"'
         'content-type' =3D> 'application/octet-stream'
      'size' =3D> 29
      'tempname' =3D> '/tmp/T2r9F7Ex11'
      'type' =3D> 'application/octet-stream'

The structure of each node is the same, but as a whole the upload-list
switches internally from a HASHREF to an ARRAYREF. IE6, FireFox, Chrome all
bring in the Hashref, but IE8 brings in an Arrayref.

On top of that, if there's just one upload, it's not even an array, it's
just the node itself.

What the heck? Sure seems odd to offer a different storage structure based
on browser-platform...


On Wed, Oct 6, 2010 at 8:27 AM, will trillich
<will.trillich at serensoft.com>wrote:

> The FormBuilder/Catalyst -generated HTML works just fine in Chrome and in
> Firefox, so debugging there isn't useful. It also works fine in older
> Internet Explorers. :( I was hoping someone has already run into this
> FormBuilder-snag-with-IE8 and found an elegant fix...
>
> And the "return validate_incident(this)" code is generated via
> FormBuilder, that's why I was asking the list, hoping someone else here h=
as
> run into this and found a workaround.
>
> We do have other DHTML javascript on the page (e.g. click to dynamically
> add another upload-field) so Javascript and JQuery are working. IE8 has
> apparently been tweaked enough that it doesn't recognize the object in th=
at
> context...?
>
> Any ideas?
>
>
> On Wed, Oct 6, 2010 at 1:13 AM, Toby Corkindale <
> toby.corkindale at strategicdata.com.au> wrote:
>
>> On 06/10/10 14:00, will trillich wrote:
>>
>>> Short version: Catalyst/Formbuilder uploads work fine in firefox and
>>> chrome, works fine in IE 6... but not IE 8, where it throws an "object
>>> expected" error.
>>>
>>
>> Ugh, I hit this a little while ago, but have forgotten the details
>> already.
>> I think you are looking in the right direction with the "this" though; t=
ry
>> validating it in your function to ensure it contains what you're expecti=
ng
>> perhaps?
>>
>> Also, can you verify that jquery is actually getting loaded OK?
>>
>> ie. In your document, put something like:
>>  $(function() { alert("jquery has loaded!"); });
>>
>> and check to see that you get an alert box when you load the page. If no=
t,
>> fire up Chrome's developer tools, or Firefox's Firebug, and see they men=
tion
>> any warnings or errors.
>>
>> -Toby
>>
>> _______________________________________________
>> List: Catalyst at lists.scsys.co.uk
>> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
>> Searchable archive:
>> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
>> Dev site: http://dev.catalyst.perl.org/
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20101025/3e23e=
1b6/attachment.htm


More information about the Catalyst mailing list