我正在尝试测试以下代码,用于将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;
答案 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
分机,而应切换为PDO
或mysqli
。
关于此事的SO和外部资源都有很多讨论。
只是几个: