Formulario dirigido a iFrame en una página diferente

para un cliente que insiste en usar su configuración actual, tiene un formulario que, al enviarlo, carga un archivo asp en un iframe.

Como solo he estado trabajando en este campo en los últimos años, tengo muy poca experiencia en el uso de iFrames o ASP, por lo que agradecería mucho cualquier ayuda que pudiera brindarme.

El formulario está en sidebar.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>

Y la página de resultados quiero estar en test.php...

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

Desafortunadamente, no tengo acceso al archivo del controlador ASP.

Básicamente, cuando completa el formulario en la barra lateral y hace clic en el botón Enviar, quiero que el navegador redirija a la página de resultados y cargue el iframe con los resultados.

¿Es eso posible?

preguntado el 03 de mayo de 12 a las 12:05

¡Ay el horror! Tratar page.php#iframe_id como el objetivo. -

4 Respuestas

Si la página en el iFrame es capaz de aceptar datos GET y POST, puede ENVIAR los datos a la página que contiene el iFrame y luego usar el idioma de su elección para agregarlo a la etiqueta src del iFrame como una cadena de consulta.

Alternativamente, si la página en el iFrame solo acepta datos POST, por ejemplo, porque quien lo escribió ha impedido que acepte datos GET por razones de seguridad (percibidas), puede usar el idioma de su elección para escribir otro formulario en la página de destino que contiene el iFrame, luego envíelo automáticamente (usando JavaScript) al iFrame, habiendo establecido que el objetivo de ese formulario sea el iFrame. (Tenga en cuenta que esto es sutilmente diferente del ejemplo anterior de JQuery, que usa la cadena de consulta).

Este es un ejemplo de la primera solución anterior:

Formulario en primera página:

<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>

Página de destino:

<?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>

Respondido 12 Feb 14, 12:02

Es posible, solo usa ajax para publicar los datos del formulario. todo bajo tu control. disfrutar.

contestado el 03 de mayo de 12 a las 12:05

Debe poner un nombre en su iframe y luego usar el objetivo atributo en el formulario.

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

contestado el 03 de mayo de 12 a las 12:05

Aquí hay un ejemplo del uso de JavaScript y jQuery para leer un formulario y modificar la URL de un iframe en consecuencia:

<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>

Demo en vivo:

jsFiddle

contestado el 03 de mayo de 12 a las 13:05

Gracias por tu ayuda lo conseguí! :D - usuario1372359

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.