从PHP代码中插入JavaScript变量中的值

时间:2016-04-15 07:38:28

标签: javascript php mysql

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

测试了php代码并给出了正确的输出,但是javascript中的警告框显示了这个 -

  

date_sub(curdate(),interval 1 day)和activity = 1 group by b b> 1000&#34 ;; $ query = mysql_query($ myquery); if(!$ myquery){echo mysql_error();死; } $ data = array(); for($ x = 0; $ x< mysql_num_rows($ query); $ x ++){$ data [] = mysql_fetch_assoc($ query); } // echo json_encode($ data);回声'' mysql_close($服务器); ?>



<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>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:0)

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

然后:

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

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

答案 1 :(得分:0)

在html行中添加ID属性

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

替换上面一行
echo '<input type="hidden" name="myPhpValue" id ="myPhpValue" value="'. json_encode($data) . '">';

答案 2 :(得分:0)

您正在将值插入html,而不是javascript代码。 这样做:

<script type="text/javascript">

function test(){
 var x = <?php echo json_encode($data); ?>;
 alert(x);  
}
test();

</script>

答案 3 :(得分:0)

服务器配置问题

如果您在客户端获取php代码(view-source to confirm),则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) . '">';

阶段2:javascript访问html元素(这是从你的代码中取得的)。

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

边注

您使用的是deprecated mysql分机,而应切换为PDOmysqli

关于此事的SO和外部资源都有很多讨论。

只是几个: