如何将数据从Ajax弹出窗口传递到父页面?

时间:2009-08-05 01:18:35

标签: javascript html ajax popup window

我目前在应用程序的主页面上显示了一个Ajax弹出窗口。在这个弹出窗口中,我有选择列表,我想在用户关闭弹出窗口时将弹出的选定值传递回主页面。

我觉得有一个基本的方法可以做到这一点,但我似乎无法弄明白。

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

当您通过javascript打开弹出窗口时(无论内容是通过ajax还是其他技术),您都可以轻松控制它。

对于您的问题,您需要 window.opener ,它指向原始文档: 干净的:

弹出代码中的

有:

<body onclose="window.opener.somevar=document.getElementById('myid').value;window.opener.orsomefunction('value');">
<input id="myid"/>
</body>

这样,当你关闭它时,它会设置一个变量和/或调用一个函数。

您也可以在按钮上或直接在输入

上设置set-function
<button onclick="window.opener....;window.close();"/>

答案 2 :(得分:0)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<?PHP 
$test_1 = $_GET['variable1'];
$test_2 = $_GET['variable2'];
$test_3 = $_GET['variable3'];

$test1 = "blabla1";
$test2 = "blabla2";
$test3 = "blabla3";
?>
<html>
<head>
    <title>Untitled</title>
     <script type="text/javascript" src="js/mootools-1.2.4-core-yc.js"></script>
     <script type="text/javascript">
     //on dom ready...
window.addEvent('domready', function() {

    /* ajax replace element text */
    $('ajax-replace').addEvent('click', function(event) {
        //prevent the page from changing
        event.stop();
        //make the ajax call, replace text
        var req = new Request.HTML({
            method: 'get',
            url: $('ajax-replace').get('href'),
            data: { 'variable1' : '<?=$test1?>', 'variable2':'<?=$test2?>', 'variable3' : '<?=$test3?>' },
            //onRequest: function() { alert('Request made. Please wait...'); },
            update: $('message-here'),
            onComplete: function(response) { alert('Variable 1: <? echo $test1; ?> Variable 2: <? echo $test2; ?> Variabble 3: <? echo $test3; ?>'); $('message-here');
            }
        }).send();
    });
});

     </script>
</head>

<body>


<p>
  <a href="index.php" id="ajax-replace">Click</a> 
</p>
<div id="message-here">
<?PHP
echo $variable_1."<br>";
echo $variable_2."<br>";
echo $variable_3."<br>";
?>
</div>

</body>
</html>