[英]php variable to javascript with json_encode
我知道这个话题已经讨论过几次了,但是我似乎找不到我做错了什么。
我正在尝试做的事情:用户键入一个数字,然后单击按钮创建一个具有该列数的表。
继承人的PHP:
<?php
$twig = require_once('bootstrap.php');
$hostname = 'localhost';
$username = 'root';
$password = '';
$conn = new PDO("mysql:host=$hostname;dbname=mydb", $username, $password);
echo $twig->render('index.html', array());
$numOfRows = 1;
if(isset($_POST['button'])){
$numOfRows = $_POST['num_input'];
}
html / javascript:
<html>
<head>
<script>
function insertRows(){
var numOfRows = <?php echo json_encode($numOfRows) ?>;
var out = "<table><tr><th>test</th>";
for (i = 0; i < numOfRows; i++){
out += "<th>test</th>";
}
out += "</tr></table>";
document.getElementById("table").innerHTML = out;
}
</script>
</head>
<body>
<form action="index.php" method="post">
<textarea id="num_input" name ="num_input"></textarea>
<button type="button" name="button" onclick="insertRows()"> Go </button>
</form>
<p id="table"></p>
</body>
</html>
因为我没有使用IDE,所以没有错误或任何东西,只是在vim中这样做,但错误是那只是没有发生。 如果我将for循环中的“ numOfRows”更改为一个数字,则可以正常工作,因此我很确定json_encode是问题所在。
谢谢!
编辑:只是为了测试它,我使用了一个字符串变量$str = "test";
php文件,而不是使用for循环,我只是将javascript编辑为
var str = <?php echo json_encode($str); ?>;
alert(str);
我也尝试过
var str = <?php echo $str; ?>;
alert(str);
但没有任何效果。
在这种情况下,不需要json_encode
。
只需更换
var numOfRows = <?php echo json_encode($numOfRows); ?>;
与
var numOfRows = <?php echo (int)$numOfRows; ?>;
编辑:您缺少一个; 在
<?php echo json_encode($numOfRows) ?>
应该
<?php echo json_encode($numOfRows);?>
在这种情况下,如果最好检查服务器日志,这将自动使您更好地自己发现这些错误。
您正在混合整数和字符串。 在PHP中,数据库将始终返回字符串,以及您在for循环中将变量用作int的方式。
我相信以下更改将达到正确的结果。
$numOfRows = intval($_POST['num_input']);
在使用PHP将整数转换为整数的情况下,这是全局的。
您没有忘记任何$。 JS不需要$作为变量。
就您的json_encode而言,如果您只是将整数从PHP传递给JS,则无需json_encode。 只需在JS源代码中将变量作为<?=$numOfRows?>
传递给JS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.