我试图调用我的PHP区域顶部声明的Javascript函数.然而它不起作用.任何人都可以告诉我它的原因.除了这一部分,其他一切都在起作用.请帮我.
<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>AES (Rijndael) Encryption Test in JavaScript</title>
<script src="aes-enc.js" type="text/javascript" language="JavaScript"></script>
<script src="aes-dec.js" type="text/javascript" language="JavaScript"></script>
<script src="aes-test.js" type="text/javascript" language="JavaScript"></script>
<script type="text/javascript">
function doDecryption()
{
document.write("Inside Javascript");
var ct, key;
ct = hex2s(<?php echo $myValue; ?>);
document.write("Inside Javascript");
document.write(ct);
// key = hex2s(theForm.key.value);
// theForm.plaintext.value = byteArrayToHex(rijndaelDecrypt(ct, key, "ECB"));
}
</script>
</head>
<body>
<?php
mysql_connect("localhost","root","");
mysql_select_db("encryption") or die(mysql_error());
$userId = $_POST['userId'];
if (($_SERVER['REQUEST_METHOD'] == 'POST') && ($_POST['key'] == ""))
{
$query = mysql_query("select * from employee_details where id = '$userId'"); if($row=mysql_fetch_assoc($query))
{
echo '<tr>';
foreach($row as $value)
echo '<td>'.$value.'</td>';
echo '</tr>';
}
else { echo "No rows returned"; }}
else if (($_SERVER['REQUEST_METHOD'] == 'POST') && ($_POST['key']))
{
$columname = "ciphertext";
$tablename = "employee_details";
function getField($field, $tbl_name, $condition)
{
$result = mysql_query("SELECT $field FROM $tbl_name WHERE id = ".$condition);
return @mysql_result($result, 0);
}
$myValue = getField($columname,$tablename,$userId);
echo "$myValue";
[B]echo '<script type="text/javascript">
doDecryption();
</script>';[/B]
echo "whats happening";
//doDecryption();
}
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
$myValue 当你尝试在JS中使用它时没有值.
PHP在服务器上运行,输出带有嵌入式JavaScript的HTML文档,文档发送到客户端然后运行JavaScript.
如果在PHP到达文档末尾之前您不知道JavaScript变量需要具有什么值,那么在此之前您无法生成JS的那一部分.您可能希望将其作为参数写入函数调用.
一旦你这样做,你就会遇到另一个问题 - 如果你的数据是一个字符串,那么它需要被引用(并且其中的任何匹配引号都需要被转义).
简而言之:PHP输出可能作为JS处理的文本,它不能调用JavaScript函数(除非你开始混合可以与服务器上的Rhino/Spidermonkey/etc对话的扩展).
所有这一切,在这种情况下,似乎没有任何理由首先使用JavaScript,你最好将所有逻辑移动到PHP.
顺便提一下,您选择的Doctype将在大多数浏览器中触发Quirks模式.这几乎总是非常不受欢迎的.
更好的选择是:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud)
或者,如果你真的想要Transitional:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Run Code Online (Sandbox Code Playgroud)