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