【问题标题】:Need Page 1 webform to pass variables into the src portion of an iframe located in Page 2需要第 1 页的 webform 将变量传递到位于第 2 页的 iframe 的 src 部分
【发布时间】:2011-02-22 02:38:45
【问题描述】:

菜鸟寻求帮助。我是一个学习缓慢的人。

我的首页上有一个小表格,询问“到达日期”和“出发日期”。我需要捕获这两个问题的结果并将其传递到位于页面上的 iframe 的 src 部分,该页面在按下“提交”时出现。

src 不在同一台服务器上。它看起来像: www.bob.com/res.php3?day_a=VAR1&month_a=VAR2&day_d=VAR3&month_d=VAR4&

如果你能帮助我,我将不胜感激,我从头开始。

第 1 页的代码是借用的,看起来像这样:

    <script language="javascript">
function changeIFrame() {
   window.open('http://www.bob.com/res3.php');
   }
/***********************************************
* Drop Down Date select script- by JavaScriptKit.com
* This notice MUST stay intact for use
* Visit JavaScript Kit at http://www.javascriptkit.com/ for this script and more
***********************************************/

var monthtext=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];

function populatedropdown(dayfield, monthfield, yearfield){
var today=new Date()
var dayfield=document.getElementById(dayfield)
var monthfield=document.getElementById(monthfield)
var yearfield=document.getElementById(yearfield)
for (var i=0; i<31; i++)
dayfield.options[i]=new Option(i, i+1)
dayfield.options[today.getDate()]=new Option(today.getDate(), today.getDate(), true, true) //select today's day
for (var m=0; m<12; m++)
monthfield.options[m]=new Option(monthtext[m], monthtext[m])
monthfield.options[today.getMonth()]=new Option(monthtext[today.getMonth()], monthtext[today.getMonth()], true, true) //select today's month
var thisyear=today.getFullYear()
for (var y=0; y<20; y++){
yearfield.options[y]=new Option(thisyear, thisyear)
thisyear+=1
}
yearfield.options[0]=new Option(today.getFullYear(), today.getFullYear(), true, true) //select today's year
}
</script>

<form action="" name="someform">
<select id="day_a">
</select> 
<select id="month_a">
</select> 
<select id="year_a">
</select> 
<input type="button" onclick="changeIFrame();" />
</form>

<script type="text/javascript">

//populatedropdown(id_of_day_select, id_of_month_select, id_of_year_select)
window.onload=function(){
populatedropdown("day_a", "month_a", "year_a")
}
</script>

我尝试使用第 2 页中 bob-the-destroyer 的代码来获取这些值,但没有成功。

【问题讨论】:

  • iframe 是过时的技术,你应该使用 ajax。
  • 我同意 dagon,但 iframe 的 src 不在我们的服务器上,我们配置它的能力为零。

标签: php variables


【解决方案1】:

你可以改变iframe的src属性是这样的:

<script language="javascript">
function changeIFrame() {
   var day_a = document.getElementById("day_a").value;
   var month_a = document.getElementById("month_a").value;
   var newSrc = "www.bob.com/res.php?day_a=" + day_a + "&month_a=" + month_a;
   document.getElementById("my_iframe").src = newSrc;
}
</script>

<input id="day_a" type="text" />
<input id="month_a" type="text" />
<input type="button" onclick="changeIFrame();" />

<iframe id="my_iframe" src=""></iframe>

【讨论】:

  • 好的,我到了。我不知道我的描述是否清楚,但 iframe 位于第二页上,该页面旨在在单击按钮时加载。
  • 所以你想从页面A提交数据到页面B。页面B上有iframe?
【解决方案2】:

从 Spidy 的回答中获取您的评论,“iframe 位于第二页上,该页面旨在在单击按钮时加载。”,它在概念上就像 javascript 方式一样,除了使用服务器可用的posted 值和首次页面构建...

<?php

// get UNIX TIMESTAMPS of client's posted form fields
$arrivalDate = strtotime(trim($_POST['arrivalDate']));
$departureDate = strtotime(trim($_POST['departureDate']));
if (!$arrivalDate OR !$departureDate)
    // you will need better validation and error handling than this though
    die("These aren't valid dates."); 

// parse month/day numeric values
$day_a = date('n', $arrivalDate);
$month_a = date('j', $arrivalDate);
$day_d = date('n', $departureDate);
$month_d = date('j', $departureDate);

// here echo HTML or escape out of PHP to begin building your page


// draw iframe using parsed values
echo "<iframe src=\"www.bob.com/res.php3?day_a=" . $day_a . "&month_a=" 
    . $month_a . "&day_d=" . $day_d . "&month_d=" . $month_d . "\"></iframe>";


// here echo more HTML or escape out of PHP to finish building your page

?>

请注意最后一个回显:它很草率,您最好忽略所有这些连接,但我将其分段只是为了更好地显示 PHP 变量的放置位置。

【讨论】:

  • Bob-the-destroyer 感谢您的帮助。我仍在努力让它发挥作用。很大程度上,我正在为第 1 页上的内容和第 2 页上的内容而苦苦挣扎。我借用了下面的代码。为了简单起见,我暂时绕过验证和时间戳。这当然在第 1 页上,但使用第 2 页上的代码(修改)它不起作用。
  • @Michael:我上面的代码适用于第 2 页。$_POST 值“arrivalDate”和“departureDate”应该来自第 1 页表单上这些名称的输入框,客户端填写并提交。请记住,由于 iframe 经常出于恶意原因使用,因此默认情况下,客户端的浏览器很有可能实际上会阻止与此 iframe 的所有交互。即使他们的浏览器没有阻止该元素,iframe 中的内容与您自己的网站之间的标准所允许的交互性也很少。
猜你喜欢
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
相关资源
最近更新 更多