|
Cameron McPherson
cameron.mcpherson at florey.edu.au
Tue Oct 30 10:25:48 EDT 2007
I am using the mod_python publisher handler to control form data. It works fine, but
what I want to do is create a submit 'please wait while request is processed' kind
of page upon form submit.
AFAIK, publisher has to either return a string to complete, or use req.write(x)
followed by return(apache.OK) to finish. with this in mind, how can I return html
showing a submit page, whilst running the script on the form data in the background,
then return that html string when it's done?
I've tried javascript through the form onsubmit, which is fine for most form data
entered, except it chokes on the file upload value - it cannot pass this correctly
to the handler req object (I need it as req.form['file']), and the inbuilt read-only
prevents me from assigning it to a input file value using js (see below).
Any ideas on implementing this are greatly appreciated.
Cam.
==> submits sequence or file to 'ProcessForm'; calls 'submitCheck()' first
<form enctype="multipart/form-data" action= "./ProcessForm" method="post"
onsubmit="submitCheck()" name="ppg">
<p><input type="textarea" name="sequence" maxlength="100000"
autofocus="autofocus" cols="80" rows="10" wrap="hard" /></p>
<p><input type="file" name="file" /> <input type="submit"
value="submit" /> <input type="reset" value="reset" /></p>
...
</form>
==> Processes form data, returns a formatted string to the client
def ProcessForm(req): # called from 'submit'
...
if not sequence: # (or =='')
fileitem=req.form['file']
if fileitem.filename: #check that file was uploaded
... #process uploaded file data
return Display(req,probeList)
==> Hack job to try to make a submit page w' JS - works fine for form data
'sequence' in the form textarea, but cannot adequately pass the file item data to
the 'ProcessForm' script (ie: i think it's not recognised properly as a req object
file? I've commented out the bits which dont work)
function submitCheck() {
if (document.forms.ppg.sequence.value) {
var seq=document.forms.ppg.sequence.value
var fil=document.forms.ppg.file.value
var gen=document.forms.ppg.gene_id.value
var num=document.forms.ppg.number_probes.value
var smin=document.forms.ppg.size_min.value
var smax=document.forms.ppg.size_max.value
var tmin=document.forms.ppg.tm_min.value
var tmax=document.forms.ppg.tm_max.value
var gmin=document.forms.ppg.gc_min.value
var gmax=document.forms.ppg.gc_max.value
var subS1="<html>\n<head>\n<link rel=\"stylesheet\" type=\"text/css\"
href=\"./assets/style/style.css\" />\n</head>\n<body>\n<h3
style=\"text-decoration:blink;\">Please wait while your request is
processed...</h3>";
var subS2="</form>\n</body>\n</html>";
document.write(subS1);
document.write("<form enctype=\"multipart/form-data\" action=\"./ProcessForm\"
method=\"post\" onsubmit=\"submitResult()\" name=\"ppgSubmit\">");
document.write("<input type=\"hidden\" name=\"sequence\" value="+seq+">");
//document.write("<input type=\"file\" name=\"file\" value="+fil+">");
//document.write("<input type=\"hidden\" name=\"file\" value="+fil+">");
document.write("<input type=\"hidden\" name=\"gene_id\" value="+gen+">");
document.write("<input type=\"hidden\" name=\"number_probes\" value="+num+">");
document.write("<input type=\"hidden\" name=\"size_min\" value="+smin+">");
document.write("<input type=\"hidden\" name=\"size_max\" value="+smax+">");
document.write("<input type=\"hidden\" name=\"tm_min\" value="+tmin+">");
document.write("<input type=\"hidden\" name=\"tm_max\" value="+tmax+">");
document.write("<input type=\"hidden\" name=\"gc_min\" value="+gmin+">");
document.write("<input type=\"hidden\" name=\"gc_max\" value="+gmax+">");
document.write(subS2);
document.forms.ppgSubmit.submit();
//alert(fil);
}
}
|