我是Javascript的新手,并尝试如何从iframe获取变量到子iframe(本地)。第一个iframe(iframesrc.php)可以显示来自父(index.php)的变量,但第二个iframe(iframesrc2.php)不能。我需要第二个iframe来显示第一个变量,而不会在单击按钮时丢失所有变量"插入票证"。请帮助..提前致谢。抱歉我的英语..
以下是我的代码(index.php,iframesrc.php,iframesrc2.php):
的index.php
index.php包含一个ajax脚本(在标题中),用于将变量发布到iframe。它可以在目标页面上成功显示变量(iframesrc.php)
<!doctype html>
<html>
<head>
<title>Post to an iFrame using Ajax</title>
<script type='text/javascript' charset='utf-8'>
function ajax(m,u,p,c){
/*
m=method
u=url
p=params {name:value}
c=callback
*/
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
if( xhr.readyState==4 && xhr.status==200 )c.call(this,xhr.response);
};
var params=[];
for( var n in p )params.push(n+'='+p[n]);
switch( m.toLowerCase() ){
case 'post': p=params.join('&'); break;
case 'get': u+='?'+params.join('&'); p=null; break;
}
xhr.open( m.toUpperCase(), u, true );
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send( p );
}
function initialise(){
var bttn=document.querySelectorAll('input[type="button"]')[0];
bttn.onclick=function(event){
var params={};
var fd=new FormData( document.forms['myform'] );
for( var key of fd.keys() ) params[key]=fd.get(key);
ajax.call( this, 'post', document.querySelectorAll('iframe[name="ifr"]')[0].src, params, cbfd );
};
}
function cbfd(r){
var iframe=document.querySelectorAll('iframe[name="ifr"]')[0].contentWindow.document;
iframe.body.innerHTML=r;
}
document.addEventListener('DOMContentLoaded',initialise,false);
</script>
</head>
<body>
<form name="myform" method="post">
<input name="tid" value="<?php if(isset($_REQUEST['tid'])) { echo htmlentities($_REQUEST['tid']); }?>" type="text" placeholder="VAL1" />
<input type="button" value="Generate" />
</form>
<iframe name="ifr" src="iframesrc.php"></iframe>
</body>
</html>
iframesrc.php
iframesrc.php包含通过回显存储变量(值1 )的脚本:
<?php
echo $_POST['tid'];
?>
它有效。还在标题处包含一个ajax脚本,以便在下一个目标页面/ iframesrc2.php(无法正常工作)中显示值2 。请帮帮我:(
<!doctype html>
<html>
<head>
<title>iframesrc.php</title>
<script type='text/javascript' charset='utf-8'>
function ajax(m,u,p,c){
/*
m=method
u=url
p=params {name:value}
c=callback
*/
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
if( xhr.readyState==4 && xhr.status==200 )c.call(this,xhr.response);
};
var params=[];
for( var n in p )params.push(n+'='+p[n]);
switch( m.toLowerCase() ){
case 'post': p=params.join('&'); break;
case 'get': u+='?'+params.join('&'); p=null; break;
}
xhr.open( m.toUpperCase(), u, true );
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send( p );
}
function initialise(){
var bttn=document.querySelectorAll('input[type="button"]')[0];
bttn.onclick=function(event){
var params={};
var fd=new FormData( document.forms['myform'] );
for( var key of fd.keys() ) params[key]=fd.get(key);
ajax.call( this, 'post', document.querySelectorAll('iframe[name="ifr"]')[0].src, params, cbfd );
};
}
function cbfd(r){
var iframe=document.querySelectorAll('iframe[name="ifr"]')[0].contentWindow.document;
iframe.body.innerHTML=r;
}
document.addEventListener('DOMContentLoaded',initialise,false);
</script>
</head>
<body>
<?php
echo $_POST['tid'];
?>
<form name="myform" method="post">
<input name="notikjarkom" value="<?php if (isset($notikjarkom)) { echo htmlentities($notikjarkom); }?>" type="text" placeholder="VAL2" />
<input type="button" value="Insert Ticket" />
</form>
<iframe name="ifr" src="iframesrc2.php"></iframe>
</body>
</html>
iframesrc2.php
iframesrc2.php是第二个iframe(我想让它显示iframesrc.php请求的变量的子iframe
<!doctype html>
<html>
<head>
<title>iframesrc2.php</title>
</head>
<body>
<?php
echo $_POST['notikjarkom'];
?>
</body>
</html>
以下是截图: image
当我填充一个值(值1)并单击Generate时,值1成功显示在iframesrc.php中,但是当我填充一个值(值2)并单击Insert Ticket时,值2未显示在第二个iframe(iframesrc2.php)请帮助我......
答案 0 :(得分:0)
通过更改不使用Javascript的第二个iframe解决了这个问题。 我刚刚用以下内容替换了表单和iframe部分:
<form action="iframesrc2.php" target="ifr2" method="post">
<input name="notikjarkom" value="<?php if (isset($notikjarkom)) { echo htmlentities($notikjarkom); }?>" type="text" placeholder="PASTE NOTIK JARKOM DISINI DAN TEKAN INSERT TICKET" />
<input type="submit" value="Insert Ticket" />
</form>
<iframe name="ifr2"></iframe>
谢谢,是的,我需要了解更多关于一切的内容:)