2012-04-10 15 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

ポイントは、あなたがポストに成功し、それだけであとはインラインフレームを閉じることができます終了まで」待たなければならないということである(このコードは、フレームの内側にあります)。

ファイルアップロードの応答のサーバー側を編集できますか?そうそしてちょうど行う場合、通常は提出し、応答プリント上:

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

あなたはまた、IFRAMEを閉じるjQuery.postを経由して、成功時にフォームを送信しようとすることができますが、これは、ファイルのアップロードのために動作しない場合があります。

<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

+0

アップです。ファイルをアップロードしたいとは思いませんでした。私は新しいアイデアを追加しました。それがあなたのケースで可能かどうかを見てください。 – Gavriel

+0

@Coelhoはscriptタグでこの作業を行いますか? – Gavriel