用php代码调用javascript函数

Cen*_*ser 4 javascript php

我试图调用我的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)

Que*_*tin 5

$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)