0

我尝试在 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>
4

2 回答 2

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>

不幸的是,您必须准备要发布的数据对象,但是如果您有几个字段,那应该不是问题。

于 2012-04-10T13:34:10.797 回答
0

我的解决方法非常简单,而且有点创意。

我重定向到一个简单的页面(对我来说,创建一个共享页面 [MVC],用于所有情况),这个页面获取新的 URL,并通过 javascript 重定向到新的目的地并关闭 iframe。

<script type="text/javascript">
if("@ViewBag.Url" != "False")
{
    window.parent.location.href = "@ViewBag.Url";
}
parent.$.fancybox.close();
</script>
于 2012-04-12T22:22:24.260 回答