【问题标题】:FancyBox2 close parent iframe and afterClose parameter issuesFancyBox2 关闭父 iframe 和 afterClose 参数问题
【发布时间】:2013-05-21 05:25:12
【问题描述】:

我希望有人可以帮助我。

我有 3 个页面,一个注册页面,其中包含在 iframe 中加载我的第二个页面的调用,这是一个发布到处理注册的第三个页面的表单。

我要做的是在用户注册后设置一个会话变量,并将其传递回初始注册页面。

我遇到的问题是,当第三页关闭时,第一页上的 afterclose 没有触发?

注册页面.php

<script type="text/javascript">
    function fancyboxTest(href,provider,providerid,username,email,location,firstname,surname) {
        $.fancybox({
            padding: 0,
            autoResize: true,
            autoSize: true,
            closeBtn:false,
            closeClick:false,
            afterClose  : function() {
               location.href = "home.php?se=<?php session['login'];?>";
            },
            modal:true,
            type: 'iframe',
            'href' : href + '?provider='+escape(provider)+'&providerid='+escape(providerid)+'&username='+escape(username)+'&email='+escape(email)+'&location='+escape(location)+'&firstname='+escape(firstname)+'&surname='+escape(surname)+''
        });
    }
</script>

第三页

<?php
$_Session_start();
$provider = $_POST['provider'];
$providerID = $_POST['providerid'];
$username = $_POST['user_name'];
$email = $_POST['user_email'];
$forenames = $_POST['user_forename'];
$surname = $_POST['user_surname'];
$location = $_POST['user_location'];
$date =  date('Y-m-d H:i:s');

$database = new Database();
$database->query('INSERT INTO users(provider, provider_id, name_forename, name_surname, name_username,registered_date) VALUES (:provider, :provider_id, :forename, :surname, :username,:datereg)');
$database->bind(':provider', $provider);
$database->bind(':provider_id', $providerID);
$database->bind(':forename', $forenames);
$database->bind(':surname', $surname);
$database->bind(':username', $username);
$database->bind(':datereg', $date);
$database->execute();
$nid = $database->lastInsertId();

$database = new Database();
$database->query('INSERT INTO profile(id, location, email) VALUES (:id, :location,  :email)');
$database->bind(':id', $nid);
$database->bind(':location', $location);
$database->bind(':email', $email);

$database->execute();

$tses = sha1($providerID . $date);
$_session['login'] = $tses;
$database = new database();
$database->query('UPDATE users SET session_id = :session WHERE id = :id');
$database->bind(':session', $_session['login']);
$database->bind(':id', $nid);
$database->execute();



?>
<script type="text/javascript">
    parent.$.fancybox.close();
</script>

知道发生了什么吗?用户已成功注册并且 iframe 关闭,但是浏览器位于注册页面?我已经尝试重定向到 home.php 而没有任何参数,因为我不确定会话是否已设置,如果我在注册页面上包含 session_start,我会收到警告,它已经启动。

【问题讨论】:

  • 感谢链接,恐怕不高兴,检查控制台看起来窗口不知道第三个窗口已关闭。
  • 好吧,它应该在fancybox关闭时执行,而不是任何其他窗口,除非您在iframe中打开fancybox
  • 我的第三个窗口还在fancybox中,它从窗口1打开,窗口2是表单,窗口3是表单处理页面。

标签: php jquery fancybox-2


【解决方案1】:

知道了!

从表格 3 开始,这成功了

<script type="text/javascript">
parent.jQuery.fancybox.close();
window.parent.location.href = 'home.php?se=<?php echo $tses;?>';
</script>

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多