我使用jQuery Form Plugin和APE慧星服務器,並堅持與使用iframe上傳文件相同的問題。 這裏是我的解決方案(使用靜態的iframe,而不是動態的):
添加以下代碼到網頁中,被載入前開始APE:
<iframe id="file_upload_iframe" name="file_upload_iframe" src="iframe_src.html" style="position: absolute;left: -300px;top:-300px; width:0px;height:0px;"></iframe>
添加到網站的頁面iframe_src.html(靜態iframe的初始來源):
<html>
<head>
</head>
<body>
<script type="text/javascript">
document.domain = document.domain; <!-- this is the main line -->
</script>
</body>
</html>
此頁面的目的是爲了允許表單插件進行初始表單提交,避免許可錯誤。
應用程序應返回下列方式響應:
<html>
<head></head>
<body>
<script type="text/javascript">document.domain = document.domain;</script>
<textarea>' + YOUR_DATA_TO_RETURN + '</textarea>
</body>
</html>
這是爲了避免權限被拒絕錯誤在第二和進一步的表單提交。
代碼在客戶端提交表單:
$('#image_add_commit').click(function(){
$('#file_upload_iframe').unbind();//may be it is unnecessary
$('#image_add_form').ajaxSubmit(
{success: image_add_complete,
iframe: true,
iframeTarget: $('#file_upload_iframe').get(0),
dataType: 'html',
textarea: true});
});
function image_add_complete(data){
//data variable contains YOUR_DATA_TO_RETURN that was wrapped in HTML code
}
變形在jquery.form。js文件:
查找塊
if (!s.iframeTarget) {
// add iframe to doc and submit the form
$io.appendTo('body');
if (io.attachEvent)
io.attachEvent('onload', cb);
else
io.addEventListener('load', cb, false);
}
,並更改爲
if (!s.iframeTarget) {
// add iframe to doc and submit the form
$io.appendTo('body');
}
if (io.attachEvent)
io.attachEvent('onload', cb);
else
io.addEventListener('load', cb, false);
(這只是移動第二大括號高達)