如何在PHP生成的脚本中调用javascript函数?

时间:2013-08-21 21:37:11

标签: php javascript function

我有一个问题。我有一个弹出窗口,当用户在弹出窗口中创建一个房间后,我想关闭该弹出窗口,然后将开启窗口重定向到一个新的URL。我有功能和一切,除了我不知道如何调用该功能。 (下面我写了我希望加载函数的地方)。

由于

<?php session_start(); ?>
<script type="text/javascript">
 function CloseAndRefresh() 
  {
opener.location.href = "<?php echo $website_url; ?>/livechat.php?idim=<?php echo $perdorusi2; ?>&room=<?php echo $emri; ?>";
opener.focus();
self.close();
  }
</script>
<?php
        include_once('db.php');

$perdoruesi = $_GET['perdoruesi']; 
if( strlen($_SESSION['id']) > '0' ) { $perdorusi2 = $_SESSION['id']; } else { $perdorusi2 = $perdoruesi; }

function makeRandomString($max=8) {
    $i = 0; 
    $possible_keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $keys_length = strlen($possible_keys);
    $str = ""; 
    while($i<$max) {
        $rand = mt_rand(1,$keys_length-1);
        $str.= $possible_keys[$rand];
        $i++;
    }
    return $str;
}

$emri = makeRandomString();


$hidhnedb = mysql_query("INSERT INTO dbname(`row1`, `row2`) VALUES(NULL, '$emri')");

if($hidhnedb) { 

$max=count($_SESSION['mysession']);
$i = $max + 1;
$_SESSION['mysession'][$i][$emri] = $emri;

?>
***Here is the the place where I want to call the javascript function but I do not know how to do that.***
<?php
} else { echo "Error!"; } 


?>

3 个答案:

答案 0 :(得分:1)

尝试

<script type="text/javascript">
    CloseAndRefresh();
</script>

虽然PHP重定向可能更适合您的目的。

这是一篇关于PHP重定向的文章:

http://php.about.com/od/learnphp/ht/phpredirection.htm

答案 1 :(得分:1)

由于PHP在服务器上运行,因此无法从PHP调用Javascript函数,而在PHP代码执行很久之后,Javascript就会在客户端上下载并运行。但是,您可以打印<script>标签,在这种情况下,您可以调用所需的Javascript函数:

<?php
   echo '<script>(function () { CloseAndRefresh(); } ());</script>';

答案 2 :(得分:1)

你所谓的“弹出窗口”并不是很清楚:它是另一个浏览器窗口吗? window.confirm或window.alert对话框?像jQueryUITwitter Bootstrap中的弹出窗口?

我们假设它是一个浏览器窗口。

您有两种可能性:

1 - 按一个按钮关闭弹出窗口:

<button onClick="CloseAndRefresh()">Close</button>

2 - N秒后自动触发:

<script type="application/javascript">
   var n = 5; 
  setTimeout(CloseAndRefresh, 1000*n);
</script>