2008/5/8 Ben Rooney <[EMAIL PROTECTED]>:
>
> I am having the devil's own business trying to access the contents of an 
> iframe which is used as a target for a file upload.
>
> In a php file called AJAXaddFile.php, I have the form etc - as you can see it 
> handles the return itself:
>
> <form action="<?php echo $_SERVER['PHP_SELF'] . '?' . 
> $_SERVER['QUERY_STRING'] ?>" id="AJAXaddFile" method="post" 
> enctype="multipart/form-data" target="form_iframe">
>
> ....
>
> <input type="submit" value="Upload file" name="submit" id="aafSubmit" 
> style="background-color:#2C5E9B; color:#FFFFFF;" />
>
>
> Then outside the form is the actual iframe itself:
>
> <iframe name="form_iframe" id="form_iframe" src="../templates/blank.html" 
> class="loader" style="display:none"></iframe>
>
> Blank.html is exactly that – just an empty page with no mark up at all.
>
> The fileupload works just fine, but what I want to do refresh the screen once 
> the file has been uploaded. My plan had been to grab the contents of the 
> iFrame and then using a $().html function dynamically refresh the screen 
> showing the newly uploaded file.
>
> Playing around with CSS off I can see the iFrame contains the returned data 
> with the recently uploaded file as the top of the list which is exactly what 
> I want. But try as I might I can't seem to access that wretched iFrame 
> through jQuery.
>
> The jQuery is hanging off a submit function:
> $('#AJAXaddFile').submit(function() {
> }
>
> I have tried all manner of ways of getting hold of that content. If I do 
> $('#form_iframe').html()  after the .submit call I simply get the contents of 
> blank.html back again. I tried doing an Ajax call using .get on the original 
> file as part of the submit callback, but it seems to access the data *before* 
> the upload has taken place, not after the sumbit has happened. If I try and 
> grab the iframe outside of the .submit call then obviously it doesn't contain 
> the data.
> What I  am trying to do is to grab the data once the server has returned the 
> data (I tried a .ready on the iFrame but it picks it up before the php script 
> has fired).
>
> Alas I can't point to this in real life as it is on a development server 
> which is not visible.
>
> I suspect that is as clear as mud – but if anyone can pick their way through 
> this and has any pointers ... I would be soooo appreciative.
>
>
> Many many thanks
> Ben



You need to add an onload handler to listen for when the iframe has
loaded the response content.  You can then access the content via DOM
traversal.  There are a number of interesting x-browser issues however
that make this less than straight-forward, including one I just fixed
today for Opera 9.2x.  I would recommend at least looking over the
form plugin code to see how it manages this task.  In particular, look
at the fileUpload and cb functions.

http://malsup.com/jquery/form/jquery.form.2.09.js

Mike

Reply via email to