Javascript重定向不使用IFrame,没有IFrame的Works

时间:2015-04-08 01:32:35

标签: javascript php iframe

我正在使用PHP表单来收集信息。我希望它在按下提交按钮时重定向到同一域上的页面。如果你去php表单,但不是iframed php表单,它工作正常。代码如下。

define( 'PHPFMG_REDIRECT', 'http://propertytaxdfw.com/thank-you-sign-up.html' );
function phpfmg_thankyou(){
// move the redirect to phpfmg_thankyou() to get around the redirection within an iframe problem
        /*
        $redirect = PHPFMG_REDIRECT;
        if( strlen(trim($redirect)) ):
            header( "Location: $redirect" );
            exit;
        endif;
        */
    phpfmg_redirect_js();
?>

<!-- [Your confirmation message goes here] -->
    <br>

    <b>It Worked!</b>
    <br><br>

<?php

} // end of function phpfmg_thankyou()

我认为这就是问题所在。如果需要,我可以提供额外的代码。我提前感谢您的帮助。我在这里读了很多东西试图找到答案,但我觉得我被卡住了。

表格:http://propertytaxdfw.com/SignUpFormFiles/form.php iframed的页面:http://propertytaxdfw.com/sign-up.html

function phpfmg_redirect_js(){
    if( defined('PHPFMG_REDIRECT') && '' != PHPFMG_REDIRECT ){
        echo "<script type='text/javascript'>
            function phpfmg_redirect(){
                var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
                try{
                    if( parent ) parent.location.href = redirect;
                }catch(e){
                    location.href = redirect;
                };
            }

            phpfmg_redirect();
        </script>";
    };

1 个答案:

答案 0 :(得分:0)

更新6错误:

必须删除第2和第3个括号。

   this.submitOK = function(){
  window.top.location.href = redirect; 
}
    }


}

更新6

删除

    if( redirect == '' ){
        showThankYouMessage();
        return;
    };

try{
    if( parent ) {alert('parent');parent.location.href = redirect;}

}catch(e){  alert('frame');
    location.href = redirect;
};

并替换为这一行:window.top.location.href = redirect;

this.submitOK = function(){
  window.top.location.href = redirect; 
}

更新5

删除之前的提醒并再向下添加两个其他提醒,父级和框架。

this.submitOK = function(){
    if( redirect == '' ){
        showThankYouMessage();
        return;
    };

try{
    if( parent ) {alert('parent');parent.location.href = redirect;}

}catch(e){  alert('frame');
    location.href = redirect;
};

}

更新4

在form.lib.php第2484行(由于之前的编辑可能会有所不同)

添加第alert('OK');

然后在提交表单时,会弹出一个消息框“确定”。

   this.submitOK = function(){
   alert('OK');

        if( redirect == '' ){
            showThankYouMessage();
            return;
        };

        try{
            if( parent ) parent.location.href = redirect;
        }catch(e){
            location.href = redirect;
        };
    }

更新结束4


更新3

在第11行的form.lib.php

define( 'PHPFMG_REDIRECT', '' );

必须:

define( 'PHPFMG_REDIRECT', 'http://propertytaxdfw.com/thank-you-sign-up.html' );

更新结束3

更新2

如果您可以找到添加此代码的位置。

function PHPFMG( formID ){
    var frmID = formID;
    var exts = {
        'upload_control' : '',
        'harmful_exts'  : '.php, .html, .css, .js, .exe, .com, .bat, .vb, .vbs, scr, .inf, .reg, .lnk, .pif, .ade, .adp, .app, .bas, .chm, .cmd, .cpl, .crt, .csh, .fxp, .hlp, .hta, .ins, .isp, .jse, .ksh, .Lnk, .mda, .mdb, .mde, .mdt, .mdw, .mdz, .msc, .msi, .msp, .mst, .ops, .pcd, .prf, .prg, .pst, .scf, .scr, .sct, .shb, .shs, .url, .vbe, .wsc, .wsf, .wsh',
        'harmful_errmsg': "File is potential harmful. Upload is not allowed.",
        'allow_exts'  : '.jpg, .gif, .png, .bmp',
        'allow_errmsg': "Upload is not allowed. Please check your file type."
    };
    var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";

移动var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";

到函数

之上
var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";
function PHPFMG( formID ){
    var frmID = formID;
    ...

或者将redirect替换为theis函数中的实际网址:
删除if( redirect == '' ){

this.submitOK = function(){
        if( redirect == '' ){
            showThankYouMessage();
            return;
        };

        try{
            if( parent ) parent.location.href = redirect;
        }catch(e){
            location.href = redirect;
        };
    }

更改为:

this.submitOK = function(){
        try{
            if( parent ) parent.location.href = 'http://propertytaxdfw.com/thank-you-sign-up.html';
        }catch(e){
            location.href = redirect;
        };
    }

更新结束2


我不是重定向的忠实粉丝。

大多数情况下,使用简单include()readfile()

进行重定向时

重定向问题是它需要浏览器执行以及其他(和不必要的)HTTP请求。

为什么在没有必要时进行重定向?

在你的情况下,它可能适用于重定向不会的地方。

其中任何一个都可以正常工作。

if( strlen(trim($redirect))){
  readfile($redirect);
  exit;
}
if( strlen(trim($redirect))){
  include($redirect);
  exit;
}
if( strlen(trim($redirect))){
  echo file_get_contents($redirect);
  exit;
}

更新1

所需的重定向JS不在iFrame中:https://propertytaxdfw.com/SignUpFormFiles/form.php

PHP中未执行phpfmg_redirect_js()函数或未定义defined('PHPFMG_REDIRECT'),或PHPFMG_REDIRECT为空字符串('' != PHPFMG_REDIRECT)

要尝试两件事:
将其添加到PHP:

define("PHPFMG_REDIRECT", "http://propertytaxdfw.com/thank-you-sign-up.html");

或者将其添加到PHP:

    echo "<script type='text/javascript'>
    function phpfmg_redirect(){
      var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
      try{
      if( parent ) parent.location.href = redirect;
      }catch(e){
        location.href = redirect;
      };
    }
    phpfmg_redirect();
</script>";

当PHP创建页面时,如果发现上述JS与现有的<script type='text/javascript'> </script>
一起,则将代码更改为:

    echo "\nfunction phpfmg_redirect(){
      var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
      try{
      if( parent ) parent.location.href = redirect;
      }catch(e){
        location.href = redirect;
      };
    }
    phpfmg_redirect();\n";