表单定位到不同页面上的 iFrame

Form targeting iFrame on a different page

本文关键字:iFrame 定位 表单      更新时间:2023-09-26

对于坚持使用当前设置的客户,他有一个表单,该表单在提交时在iframe中加载ASP文件。

由于我过去几年才在这个领域工作,所以我在使用iFrame或ASP方面几乎没有经验,所以你能给我的任何帮助将不胜感激。

表单在侧边栏中.php...

<form method="post" action="http://www.vebra.com/home/quick/PFrefine.asp" name="searchform">
        <dl id="property_search">
          <dt class="bord">Bedrooms</dt>
          <dd><select name="bed" class="type1 Selectrooms">
                  <option selected="selected" value="1">0</option>
                  <option value="2">2</option>
                  <option value="3">2</option>
                  <option value="4">3</option>
                  <option value="5">4</option>
                  <option value="6">5</option>
              </select>
          </dd>
          <dt class="bord">Minimum Price</dt>
          <dd><select class="type2 SelectPrices" name="lop">
                <option value="0" selected>&#163;0</option>
                <option value="25000">&#163;25,000</option>
                <option value="50000">&#163;50,000</option>
                <option value="75000">&#163;75,000</option>
                <option value="100000">&#163;100,000</option>
                <option value="125000">&#163;125,000</option>
                <option value="150000">&#163;150,000</option>
                <option value="175000">&#163;175,000</option>
                <option value="200000">&#163;200,000</option>
                <option value="225000">&#163;225,000</option>
                <option value="250000">&#163;250,000</option>
                <option value="275000">&#163;275,000</option>
                <option value="300000">&#163;300,000</option>
                <option value="325000">&#163;325,000</option>
                <option value="350000">&#163;350,000</option>
                <option value="375000">&#163;375,000</option>
                <option value="400000">&#163;400,000</option>
                <option value="500000">&#163;500,000</option>
                <option value="600000">&#163;600,000</option>
                <option value="700000">&#163;700,000</option>
                <option value="800000">&#163;800,000</option>
                <option value="900000">&#163;900,000</option>
                <option value="1000000">&#163;1,000,000</option>
                <option value="2000000">&#163;2,000,000</option>
                <option value="3000000">&#163;3,000,000</option>
                <option value="4000000">&#163;4,000,000</option>
                <option value="5000000">&#163;5,000,000</option>
                <option value="6000000">&#163;6,000,000</option>
              </select>
          </dd>
          <dt class="bord">Maximum Price</dt>
          <dd><select name="hip" class="type3 SelectPrices">
                <option value="25000">&#163;25,000</option>
                <option value="50000">&#163;50,000</option>
                <option value="75000">&#163;75,000</option>
                <option value="100000">&#163;100,000</option>
                <option value="125000">&#163;125,000</option>
                <option value="150000">&#163;150,000</option>
                <option value="175000">&#163;175,000</option>
                <option value="200000">&#163;200,000</option>
                <option value="225000">&#163;225,000</option>
                <option value="250000">&#163;250,000</option>
                <option value="275000">&#163;275,000</option>
                <option value="300000">&#163;300,000</option>
                <option value="325000">&#163;325,000</option>
                <option value="350000">&#163;350,000</option>
                <option value="375000">&#163;375,000</option>
                <option value="400000">&#163;400,000</option>
                <option value="500000">&#163;500,000</option>
                <option value="600000">&#163;600,000</option>
                <option value="700000">&#163;700,000</option>
                <option value="800000">&#163;800,000</option>
                <option value="900000">&#163;900,000</option>
                <option value="1000000">&#163;1,000,000</option>
                <option value="2000000">&#163;2,000,000</option>
                <option value="3000000">&#163;3,000,000</option>
                <option value="4000000">&#163;4,000,000</option>
                <option value="5000000">&#163;5,000,000</option>
                <option selected value="6000000">&#163;6,000,000+</option>
              </select>
          </dd>
          <dt>Regions</dt><dd><img src="images/spacer.gif" alt="" /></dd>
          <dt><input type="checkbox" name="cou" id="couHertfordshire" value="43"/></dt><dd>Hertfordshire</dd>
          <dt><input type="checkbox" name="cou" id="couLondonNorth" value="126" /></dt><dd>London, North</dd>
          <dt><input type="checkbox" name="cou" id="couLondonNorthWest" value="127" /></dt><dd>London, North West</dd>
          <input type="hidden" name="slo" value="undefined" />
            <input type="hidden" name="fid" value="894" />
            <input type="hidden" name="bid" value="0" />
            <input type="hidden" name="dbt" value="1" />
            <input type="hidden" name="nre" value="undefined" />
            <input type="hidden" name="thu" value="undefined" />
            <input type="hidden" name="vto" value="undefined" />
            <input type="hidden" name="ord" value="undefined"/>
            <input type="hidden" name="nba" value="undefined" />
          <dt><input type="submit" class="search_now" value="Find Property" formtarget="hello" /></dt><dd><img src="images/spacer.gif" alt="" /></dd>
        </dl>
      </form>

还有我想测试的结果页面.php...

<iframe width="583" height="500" name="hello">iframe</iframe>

不幸的是,我根本无法访问 ASP 处理程序文件。

基本上,当您在侧边栏中填写表单并单击提交按钮时,我希望浏览器重定向到结果页面并使用结果加载 iframe。

这可能吗?

如果 iFrame 中的页面能够接受 GET 和 POST 数据,则可以将数据发布到包含 iFrame 的页面,然后使用您选择的语言将其作为查询字符串追加到 iFrame 的 src 标记。

或者,如果 iFrame 中的页面只接受 POST 数据,例如,因为编写它的人出于(感知的)安全原因阻止它接受 GET 数据,您可以使用您选择的语言在包含 iFrame 的目标页面中编写另一个表单,然后自动将其(使用 JavaScript)提交到 iFrame,将该表单的目标设置为 iFrame。(请注意,这与上面的 JQuery 示例略有不同,后者使用查询字符串。

这是上面第一个解决方案的示例:

第一页的表格:

<form name="frmPost" method="post" action="test_iframe_post_target.php">
    <input type="hidden" name="actionid" value="2" />
    <input type="hidden" name="qy" value="1" />
    <input type="hidden" name="pid" value="123" />
</form>
<p><a href="javascript:document.frmPost.submit();">Submit Form</a></p>

目标页面:

<?php
$lngAction = $_POST["actionid"];
$lngQy = $_POST["qy"];
$lngPID = $_POST["pid"];
?>
<p>This is the target page. Action is: <?php echo $lngAction; ?></p>
<iframe name="test_iframe" width="900" height="320" src="test_iframe_post_iframe.php?action=<?php echo $lngAction; ?>&qy=<?php echo $lngQy; ?>&pid=<?php echo $lngPID; ?>" border="0" frameborder="0" align="center" marginwidth="1" marginheight="1" target="_top"></iframe>

iFrame:

<p>This is the iFrame. Action is: <?php echo $lngAction; ?>; Qy is: <?php echo $lngQy; ?>; PID is: <?php echo $lngPID; ?>.</p>

有可能,您只需使用 ajax 来发布表单数据。 一切尽在您的掌控之中。 享受。

您需要在 iframe 上输入一个名称,然后在表单上使用目标属性。

<iframe src="foo" name="myframe"></iframe>
<form method="post" action="http://www.vebra.com/home/quick/PFrefine.asp" name="searchform" target="myframe">
...

下面是一个使用 JavaScript 和 jQuery 读出表单并相应地更改 iframe url 的示例:

<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form id="target" action="javascript:return false;">
  <input type="text" value="http://www.ftd.de" />
  <input type="submit" value="Go" />
</form>
<iframe id="iframe1" src="javascript:false;"></iframe>
<script>
$('#target').submit(function() {
  $('#iframe1').attr('src', $("input:first").val());
});    
</script>
</body>

现场演示:

斯菲德尔