我正在使用 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 iframe 所在页面: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>";
};
最佳答案
更新 6 错误:
必须删除第二个和第三个括号。
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
在 form.lib.php 第 11 行
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 函数中的实际 URL:
删除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 。
函数 phpfmg_redirect_js() 未在 PHP 中执行,或者 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 中找到上述 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";
关于javascript - Javascript 重定向不适用于 IFrame,无需 IFrame 也可工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504353/