在php代码的JavaScript变量中插入值


Inserting value in a JavaScript variable from php code

我正在尝试测试以下代码,以便将PHP代码中的值插入到我的javascript变量x 中

测试了PHP代码,它给出了正确的输出,但javascript中的警告框显示了这一点-

date_sub(curdate(),interval 1 day)和activity=1组,由具有b>1000〃$query=mysql_query($myquery);if(!$myquery){echo-mysql_error();die;}$data=array();for($x=0;$x<mysql_num_rows($query)$x++){$data[]=mysql_fetch_assoc($query);}//echo json_encode($data);echo";mysql_close($server)>

<html>
  <head>    
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Testing </title>
   
  
    <script type="text/javascript" src="jquery-1.9.1.min.js"></script> 
  </head>
  <body>
  <?php
    $username='user'; 
    $password='pass';   
    $host='xx.xx.xx.xx';
    $database='abc';
    $server = mysql_connect($host, $username, $password);
    $connection = mysql_select_db($database, $server);
    $myquery = 'select code a,sum(fee) b from xyz where date > date_sub(curdate(),interval 1 day) and activity=1 group by code having b > 1000';
    $query = mysql_query($myquery);
    if ( ! $myquery ) {
        echo mysql_error();
        die;
    }
    $data = array();
    for ($x = 0; $x < mysql_num_rows($query); $x++) {
        $data[] = mysql_fetch_assoc($query);    
    }
    //echo json_encode($data);
    echo '<input type="hidden" name="myPhpValue" value="'. json_encode($data) . '">';
    
    mysql_close($server);
    ?>
    
    <script type="text/javascript">
        function test(){
             var x = document.getElementById("myPhpValue").value;
             alert(x);  
        }
        test();
    </script>
  </body>
</html>

echo '<input type="hidden" name="myPhpValue" value="'. json_encode($data) . '">';

然后:

var x = document.getElementById("myPhpValue").value;

您需要插入id="myPhpValue",因为您使用了"getElementById";

在html行中添加ID属性

echo '<input type="hidden" name="myPhpValue" value="'. json_encode($data) . '">';

用替换上述线路

echo '<input type="hidden" name="myPhpValue" id ="myPhpValue" value="'. json_encode($data) . '">';

您在html中插入的是一个值,而不是javascript代码。这样做:

<script type="text/javascript">
function test(){
 var x = <?php echo json_encode($data); ?>;
 alert(x);  
}
test();
</script>

服务器配置问题

如果您在客户端获取php代码(查看源代码以确认),则php引擎在服务器上不工作。您应该检查php是否正确安装在服务器上,并设置为web服务器中php文件的处理程序。这取决于您的web服务器和操作系统。


代码问题

问题1:您的输出(echo)正在创建一个HTML元素,而不是javascript。因此,您应该为HTML转义内容-使用htmlspecialchars而不是json_encode

问题2:您使用javascript document.getElementById访问元素,但实际元素没有ID。因此需要将ID属性添加到html输入元素中。


解决方案:

阶段1:php输出html-使用htmlspecialchars并添加id属性

echo '<input type="hidden" name="myPhpValue" id="myPhpValue" value="'. htmlspecialchars($data) . '">';

第二阶段:javascript访问html元素(这是从代码中获取的)。

var x = document.getElementById("myPhpValue").value;

旁注

您使用的是已弃用的mysql扩展,应改用PDOmysqli

有许多关于SO和外部资源的讨论。

只有几个:

  • 选择API-PHP手册
  • MySQL、MySQLi和PDO之间有什么区别
  • mysqli还是PDO——优缺点是什么