Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将iframe url传递到下一页_Php_Javascript_Url_Iframe - Fatal编程技术网

Php 将iframe url传递到下一页

Php 将iframe url传递到下一页,php,javascript,url,iframe,Php,Javascript,Url,Iframe,我在iframe中有一个自动生成的照片库,可以更改表单选择上的图像类别。其想法是通过获取url来找到他们选择的图像,并使用php将其传递到下一页。我可以从iframe获取url,但当我尝试将值传递到下一页时,我得到的是:blank。当我使用来自隐藏表单字段值的警报时,它也会在同一页面上执行此操作。我认为这是一个隐藏形式价值的问题 因此,如果您加载下面的页面,则来自隐藏表单值的警报将自动消失,大约为空白。然后我有2个按钮,1个处理表单并显示:下一页空白;另一个在分配隐藏字段值之前从函数值获取url

我在iframe中有一个自动生成的照片库,可以更改表单选择上的图像类别。其想法是通过获取url来找到他们选择的图像,并使用php将其传递到下一页。我可以从iframe获取url,但当我尝试将值传递到下一页时,我得到的是:blank。当我使用来自隐藏表单字段值的警报时,它也会在同一页面上执行此操作。我认为这是一个隐藏形式价值的问题

因此,如果您加载下面的页面,则来自隐藏表单值的警报将自动消失,大约为空白。然后我有2个按钮,1个处理表单并显示:下一页空白;另一个在分配隐藏字段值之前从函数值获取url(这是正确的值)。url值一旦分配给隐藏字段,就不会使其变为隐藏字段。那么这是不可能的还是我做错了

更新我发现IE可以正确传递值,只是Firefox因为某种原因没有将值传递到下一页。请有人告诉我这是为什么,有跨浏览器的解决方案吗

index.php
<html>
<head>
<script type="text/javascript" runat="server">
//this function gets url from iframe on same domain
  function framehref(frame,url){
  if(typeof(frame)=='string'){//find iframe (will not find a frame):
  frame=document.getElementById(frame);
}
  if(frame.tagName=='IFRAME'){//iframe:
  if(url==undefined){ return( frame.contentWindow.document.location );}
  frame.contentWindow.document.location.href=url;
}else{//frame:
  if(url==undefined){ return( frame.document.location );}
  frame.document.location.href=url;
}
}
</script>
</head>
<body>
<form method="post" action="modify.php" name="step1" border="0"><br/>


<iframe src="http://localhost/iframemain.php/" id="myIframe" name="myIframe"     width="510" height="400"></iframe>



<div id="mydiv"></div>


<input type="submit" value="nextpage!">
<input type="button" value="get url!" onclick="alert (framehref('myIframe'));" >

<script type="text/javascript" runat="server">
var image = document.createElement("input");
image.setAttribute("type", "hidden");
image.setAttribute("name", "url");
image.setAttribute("id","url");
image.setAttribute("value", framehref("myIframe"));
document.getElementById("mydiv").appendChild(image);

alert (document.getElementById("url").value)
</script>
</form>
</body>
</html>
index.php
//此函数从同一域上的iframe获取url
函数framehref(框架,url){
如果(typeof(frame)='string'){//find iframe(将找不到帧):
frame=document.getElementById(frame);
}
如果(frame.tagName=='IFRAME'){//IFRAME:
如果(url==未定义){return(frame.contentWindow.document.location);}
frame.contentWindow.document.location.href=url;
}else{//frame:
如果(url==未定义){return(frame.document.location);}
frame.document.location.href=url;
}
}

var image=document.createElement(“输入”); setAttribute(“类型”、“隐藏”); setAttribute(“名称”、“url”); setAttribute(“id”、“url”); image.setAttribute(“value”,framehref(“myIframe”); document.getElementById(“mydiv”).appendChild(图像); 警报(document.getElementById(“url”).value)
下面是modify.php

<?php
$url = $_REQUEST['url'] ;
?>
<html>
<head>
</head>
<body>

<?php
$url = $_POST['url'] ;
echo "<b>url:</b> $url"?>
</body>
</html>

您是否尝试过:

if(url==undefined){ return( frame.contentWindow.document.src );}

或者基本上,用
xxx.document.src
xxx.document.location
代替
location.href

如果url来自与父页面不同的域,则无法访问iframe的url。另外,iframe不是表单内部的有效标记感谢您的输入,我不知道表单内部的iframe标记无效,但是在将iframe放置在表单外部之后,我仍然得到相同的结果。是的,iframe url在同一个域上。我尝试使用xx.document.src和xxx.document.location进行切换,得到了相同的结果。它总是说:一旦url值被放入隐藏表单字段,则为空。url提取功能非常有效,在放入表单之前,该值始终正确。这就是我在示例中试图展示的。我没有得到未定义的错误,当它应该显示http://localhost/iframemain.php或http://localhost/images/yadayada.jpg(无论他们在站点中查看哪个页面)时,该值显示about:blank。感谢您的输入:)