Отправьте форму и загрузите iframe одновременно - PullRequest
1 голос
/ 03 марта 2011

Я хочу иметь возможность отправлять форму и загружать невидимый iframe одновременно, чтобы по существу вызвать две вещи - 1. выполнить поиск с использованием API Bing и 2. получить введенный текст во входных данных, чтобы его можно было прочитать вслух.

Я работаю независимо, но не одновременно.

Я читал, что у вас не может быть 2 действий с формой, поэтому можно ли что-то сделать с помощью нажатия на кнопку отправки onclick?

Вот мой код, у меня две формы на данный моментЯ хочу, чтобы некоторые, как объединить их, чтобы выполнить обе вещи при нажатии одной кнопки.Я полностью открыт для других предложений о том, как это сделать!

    <html>
<head>
   <link href="styles.css" rel="stylesheet" type="text/css" />
<title>PHP Bing</title>
</head>
<body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
Enter Search:<input type="text" id="searchText" name="searchText" value="<?php 
if (isset($_POST['searchText'])){
  echo($_POST['searchText']); }
else { 
echo('');
} ?>"/>

<input type="submit" value="Search!" name="submit" id="searchButton" />
<?php
if (isset($_POST['submit'])) {

$request = 
'http://api.bing.net/json.aspx?Appid=8CFD0925A6B1745AFE2F0F359DCD8D4D9DD6A5CE&sources=web&Web.Count=5&query=' . urlencode( $_POST["searchText"]);$response  = file_get_contents($request);
$jsonobj  = json_decode($response);
echo('<ul ID="resultList">');                    

foreach($jsonobj->SearchResponse->Web->Results as $value) {

echo('<li class="resultlistitem"><a href="' . $value->Url . '">'. $value->Title .'</a>');
echo('<p>'. $value->Description .'</p>');
echo('</li>');
}
echo("</ul>");
}
?>
</form>


<form method="post" action="http://vozme.com/text2voice.php" target="hiddeniframe">
<textarea id="text" cols="40" rows="1" name="text">
Enter Text
</textarea><br>
<button style="background-color:white;
background-image:
url(http://vozme.com/img/megaphone40x40w.gif);
background-position: top center;
background-repeat:no-repeat;
height: 48px; font-size:70%;
padding:4px 4px 4px 44px;">
</button>
</form>


 <iframe height="1" width="1" name="hiddeniframe" style="display: none;"></iframe>

</body>
</html>

1 Ответ

1 голос
/ 03 марта 2011

Вам необходимо зарегистрировать событие нажатия кнопки в JS и сделать его 1) загрузить iframe и 2) отправить форму.(если вы сделали это наоборот, загрузка iframe может быть прервана при выгрузке верхней страницы)

Упрощенный пример (для краткости используется jQuery):

<form id="someform" action="/foo/bar" method="POST">
   <button id="yourbutton">should trigger two actions</button>
</form>
<iframe id="some_iframe"></iframe>

<script>
    $(document).ready(function(){ // register to run this when page is ready
        $('#yourbutton').click(function(){ // register to run this when #yourbutton clicked
             $('#some_iframe').load(function(){ // register to run this when #some_iframe loads
                 $('#someform').submit();
             });
             // and *then* load the iframe
             $('#some_iframe').setAttribute('src','http://example.com/some/URL');
        });
    });
</script>
...