2012-04-10 21 views
0

我試圖在Iframe(fancybox)中提交圖片,但如果關閉iframe,我不會在服務器上獲取數據。Fancybox Iframe等待上傳文件

(此代碼是在框架內)

<a class="button" id="finishButton" onclick="closeME()"><span>@PhotoPremier.Resources.Global.btnSubmit</span></a> 

<script> 
function closeME() { 
    if (ValidationToSubmit() == true) { 
     $('#FormToSubmit').submit(); 
    } 
} 

$('#FormToSubmit').submit(function() { 
    event.preventDefault(); 
    parent.$.fancybox.close(); 
});​ 
</script> 

回答

0

我的解決方法非常簡單,有點創意。

我重定向到一個簡單的頁面(爲我創建一個共享頁面[MVC],在所有情況下使用),並且此頁面獲取新的URL,並通過JavaScript重定向到新的目的地並關閉iframe。

<script type="text/javascript"> 
if("@ViewBag.Url" != "False") 
{ 
    window.parent.location.href = "@ViewBag.Url"; 
} 
parent.$.fancybox.close(); 
</script> 
0

的一點是,你必須等待「直到完成後成功後,纔可以關閉該iframe中。

您是否有能力編輯文件上傳響應的服務器端?如果是,那麼只要做到定期提交和響應打印:

<script>parent.$.fancybox.close();</script> 

您也可以嘗試通過jQuery.post併成功關閉iframe來提交表單,但是這可能不是文件上傳工作:

<a class="button" id="finishButton" onclick="submit()"><span>@PhotoPremier.Resources.Global.btnSubmit</span></a> 

<script> 
$('#FormToSubmit').submit(submit); 

function submit() { 
    if (!ValidationToSubmit()) { 
     return; 
    } 
    var data = { 
     x: $("#x").val(), 
     y: $("#y").val(), 
     ... 
    }; 
    $.post({ 
     url:"...", 
     data: data, 
     success: function(){ 
      parent.$.fancybox.close(); 
     } 
    }) 
} 
</script> 

不幸的是,您將不得不準備要發佈的數據對象,但是如果您有幾個字段,它應該不成問題。

+0

而這個解決方案與fileupload一起工作嗎?圖片在2048kb – AFetter 2012-04-10 13:42:00

+0

ups,我沒有意識到你想上傳一個文件。我添加了一個新的想法,看看你的情況是否可能。 – Gavriel 2012-04-10 13:44:14

+0

@ Coelho使用腳本標記執行此項工作嗎? – Gavriel 2012-04-11 11:25:56