2011-03-04 112 views
-1

我知道它可以在PHP中调用javascript函数,它已经工作,但是当我尝试调用checkSecondValue时,什么也没有发生。我已经在调用函数时加入了我的变体。在PHP中调用JS函数

编辑:如果我尝试在底部调用它而不激活select中的onChange事件,它就不能工作。

<!--<html> 
<head> 
    <script type="text/javascript" src="validation.js"></script> 
    </head> 
</html> 

<script src="validation.js" type="text/javascript"></script> 
--> 
<?php 
    //retrieve all the bris for the drop down 
include '../../inc/database.php'; 
$res = BbqcDatabase::getInstance()->doQuery('SELECT * FROM T_TOURNOI_BRIS'); 
$str = "<select name='ddlBrisSelected' id='ddlBrisSelected' onChange='checkSecondValue()'>"; 

$bris = ($_GET['bris']); 

if($bris == 4) 
{ 
    $bris2 = "autre"; 
} 

if($bris == null) 
{ 
    $str .= "<option value='' selected></option>"; 
} 
else 
{ 
    $str .= "<option value=''></option>"; 
} 

$i = 0; 
while($data = mysql_fetch_assoc($res)) 
{ 
    if($data['F_BRISID'] == $bris) 
    { 
     $str .= "<option value='" . $data['F_BRISID'] . "' selected '>" . $data['F_BRISTITLE'] . "</option>"; 
    } 
    else 
    { 
     $str .= "<option value='" . $data['F_BRISID'] . "'>" . $data['F_BRISTITLE'] . "</option>"; 
    } 
} 

if($bris2 == "autre") 
{ 
    $str .= "<option value='autre' selected>Autre</option>"; 
} 
else 
{ 
    $str .= "<option value='autre'>Autre</option>"; 
} 
$str .= "</select>"; 

echo $str; 

if(is_numeric($bris)) 
{ 
    /* echo "<SCRIPT language=\"JavaScript\" SRC=\"validation.js\">checkSecondValue();</SCRIPT>"; */ 
    /* echo "<script> checkSecondValue();</script>"; */ 
    /* echo "<script type=\"text/javascript\">checkSecondValue();</script>"; */ 
    /* echo '<script type="text/javascript">', 'checkSecondValue();', '</script>'; */ 
    /* echo "<SCRIPT LANGUAGE='javascript'>checkSecondValue();</SCRIPT>"; */ 
} 

?> 
+0

'checkSecondValue()'定义在哪里? – mellamokb 2011-03-04 18:34:46

+2

这不可能在PHP中调用JS函数。在学习如何做之前,先了解你实际尝试做什么。 – Jon 2011-03-04 18:35:27

+0

在一个单独的js文件中调用validation.js – 2011-03-04 18:35:55

回答

3

您不能从PHP调用客户端JavaScript函数,但可以使客户端调用特定(客户端)事件上的函数的echo代码。

只要看看您从PHP获得的生成的HTML,然后从那里看看为什么checkSecondValue()不会在onChange事件上执行。

+0

我的不好,onChange事件起作用,它是不起作用的底部部分 – 2011-03-04 18:50:10

+0

底部是什么部分?如果你的意思是你在代码末尾注释掉的东西,就像我说的,你不能从PHP调用客户端的JavaScript函数。就像Mellanmokb在另一个答案中所说的,在整个页面加载之前,不要对函数进行真正的调用。 – 2011-03-04 19:11:50

0

至少,你希望你的函数调用只有在页面被加载后才会发生。这可以通过嵌入在body标签功能中onload来完成:

<body onload="checkSecondValue();"> 

函数调用是要执行的客户端,整个页面已经被PHP处理后。在页面处理期间,您无法在JavaScript和PHP之间来回交流。

+0

只是试过了,功能没有被调用。 – 2011-03-04 18:46:19