无法使用 JSON-encode 获取后端数组数据
unable to get back end array data using JSON-encode
我有一个脚本 (Users.php) 使用 JSON_encode 在 HTML table.
中显示对象数组
如:
Users.php :
html //空 table
script //填充table,使用json编码得到php数组,显示table
中的内容
myPhp.php :
从数据库获取信息并创建数组。
我的 php 文件工作正常,我的脚本也是如此。唯一的问题是当我使用 JSON_encode 将数组从 php 获取到脚本时它显示错误
:
未捕获的语法错误:意外的标记 '<' //在 php 代码
的第 1 行
我的Users.php:
<body >
<!-- adding user -->
<form class ="formArea" id = "addUser" action = "addUsers.php" method="POST">
<!-- addUsers.php will add users to the database then display Users.php again -->
</form>
<!-- display users -->
<table id="usersTable">
<!-- table to display user info -->
</table>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!--jquery-->
<script>
//display all users in table
var users = <?php echo JSON_encode($rows); ?>
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
}
}
</script>
</body>
我的myPhp.php:
<?php
// fur UI Users.php
// calls all users from the db and displays them in users table
$sql = new mysqli("localhost","root","","atds");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
$query = "SELECT * FROM users";
$result = $sql->query($query);
while($row = $result->fetch_object())
{
$rows[]=$row;
}
// Close connection
$result->close();
$sql->close();
?>
我尝试过的:
我尝试在使用 json_encode
之前包含 php 文件
<?php include'myPhp.php' ?>
var users = <?php echo json_encode($rows); ?>
这在我 运行 Users.php 时有效,但如果我添加用户(通过提交此网页中的表单),添加用户文件在添加用户后再次读取 Users.php ,用户最终不会显示,我也会有同样的错误:
未捕获的语法错误:意外的标记“<”
//在 myPhp.php
的第 1 行
有没有其他方法可以使用 JSON_encode 而不会导致此错误?
我没有收到与您相同的错误,但是 MyUsers.php 不知道您尝试使用的变量:
//display all users
//users array contains names and roles
var users = <br />
<b>Warning</b>: Undefined variable $rows in <b>/var/www/html/public/temp/myUsers.php</b> on line <b>17</b><br />
null
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
}
}
有几种不同的方法可以将 $rows 添加到 myUsers.php。
学习时更容易理解的一种方法是在一页中完成所有操作:在顶部获取数据并在底部呈现 HTML。
MyUser2.php:我没有设置数据库和硬编码行。假设您的数据库设置有效,您可以删除评论和硬编码用户。请注意,由于您正在输出一个有效的 JSON 数组,因此您不必在 javascript.
中重新解析它
在浏览器中看起来像这样:
//display all users
//users array contains names and roles
var users = ["user1","user2","user3"];
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
document.write(users[i] + '<br>');
}
}
MyUser2.php 文件列表:
<?php
/*
// fur UI Users.php
// calls all users from the db and displays them in users table
$sql = new mysqli("localhost","root","","atds");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
$query = "SELECT * FROM users";
$result = $sql->query($query);
while($row = $result->fetch_object())
{
$rows[]=$row;
}
// Close connection
$result->close();
$sql->close();
*/
$rows[] = 'user1';
$rows[] = 'user2';
$rows[] = 'user3';
?>
<body >
<!-- adding user -->
<form class ="formArea" id = "addUser" action = "addUsers.php" method="POST">
<!-- addUsers.php will add users to the database then display Users.php again -->
</form>
<!-- display users -->
<table id="usersTable">
<!-- table to display user info -->
</table>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!--jquery-->
<script>
//display all users
//users array contains names and roles
var users = <?php echo JSON_encode($rows); ?>;
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
document.write(users[i] + '<br>');
}
}
</script>
</body>
这将使您入门。一个学习PHP的好框架是CodeIgniter。 Laravel 是一个很棒的框架并且更受欢迎,但它添加了很多神奇的东西,使得常规 PHP 更难学习。
在你的“Users.php”
你应该首先包括“myPhp.php”
<?php include'myPhp.php' ?>
并像这样使用它:
var json = '<?php echo JSON_encode($rows); ?>';
var users = JSON.parse(json);
已解决。
当我 运行 Users.php 时 table 显示正确,但在通过执行最后包含 readfile('Users.php') 的 AddUsers.php 添加用户时显示错误它的。
问题实际上是在readfile(Users.php)
中添加Users.php.
readfile不执行Users.php,只显示其中的元素。因此 JSON_encode 从未被执行,并且 Users.php.
不知道用户
我通过将 addUsers 中的 readfile('Users.php')
更改为 include 'Users.php';
解决了这个问题
Users.php代码变成了:
<?php include 'displayUsers.php'; ?>;
var users = <?php echo JSON_encode($rows); ?>;
displayUsers(users);
function displayUsers(users){...}
我有一个脚本 (Users.php) 使用 JSON_encode 在 HTML table.
中显示对象数组如:
Users.php :
html //空 table
script //填充table,使用json编码得到php数组,显示table
中的内容myPhp.php :
从数据库获取信息并创建数组。
我的 php 文件工作正常,我的脚本也是如此。唯一的问题是当我使用 JSON_encode 将数组从 php 获取到脚本时它显示错误 : 未捕获的语法错误:意外的标记 '<' //在 php 代码
的第 1 行我的Users.php:
<body >
<!-- adding user -->
<form class ="formArea" id = "addUser" action = "addUsers.php" method="POST">
<!-- addUsers.php will add users to the database then display Users.php again -->
</form>
<!-- display users -->
<table id="usersTable">
<!-- table to display user info -->
</table>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!--jquery-->
<script>
//display all users in table
var users = <?php echo JSON_encode($rows); ?>
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
}
}
</script>
</body>
我的myPhp.php:
<?php
// fur UI Users.php
// calls all users from the db and displays them in users table
$sql = new mysqli("localhost","root","","atds");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
$query = "SELECT * FROM users";
$result = $sql->query($query);
while($row = $result->fetch_object())
{
$rows[]=$row;
}
// Close connection
$result->close();
$sql->close();
?>
我尝试过的:
我尝试在使用 json_encode
之前包含 php 文件<?php include'myPhp.php' ?>
var users = <?php echo json_encode($rows); ?>
这在我 运行 Users.php 时有效,但如果我添加用户(通过提交此网页中的表单),添加用户文件在添加用户后再次读取 Users.php ,用户最终不会显示,我也会有同样的错误: 未捕获的语法错误:意外的标记“<” //在 myPhp.php
的第 1 行有没有其他方法可以使用 JSON_encode 而不会导致此错误?
我没有收到与您相同的错误,但是 MyUsers.php 不知道您尝试使用的变量:
//display all users
//users array contains names and roles
var users = <br />
<b>Warning</b>: Undefined variable $rows in <b>/var/www/html/public/temp/myUsers.php</b> on line <b>17</b><br />
null
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
}
}
有几种不同的方法可以将 $rows 添加到 myUsers.php。
学习时更容易理解的一种方法是在一页中完成所有操作:在顶部获取数据并在底部呈现 HTML。
MyUser2.php:我没有设置数据库和硬编码行。假设您的数据库设置有效,您可以删除评论和硬编码用户。请注意,由于您正在输出一个有效的 JSON 数组,因此您不必在 javascript.
中重新解析它在浏览器中看起来像这样:
//display all users
//users array contains names and roles
var users = ["user1","user2","user3"];
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
document.write(users[i] + '<br>');
}
}
MyUser2.php 文件列表:
<?php
/*
// fur UI Users.php
// calls all users from the db and displays them in users table
$sql = new mysqli("localhost","root","","atds");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
$query = "SELECT * FROM users";
$result = $sql->query($query);
while($row = $result->fetch_object())
{
$rows[]=$row;
}
// Close connection
$result->close();
$sql->close();
*/
$rows[] = 'user1';
$rows[] = 'user2';
$rows[] = 'user3';
?>
<body >
<!-- adding user -->
<form class ="formArea" id = "addUser" action = "addUsers.php" method="POST">
<!-- addUsers.php will add users to the database then display Users.php again -->
</form>
<!-- display users -->
<table id="usersTable">
<!-- table to display user info -->
</table>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!--jquery-->
<script>
//display all users
//users array contains names and roles
var users = <?php echo JSON_encode($rows); ?>;
displayUsers(users);
function displayUsers(users){
for(i = 0; i<users.length; i++)
{
//create table row
//add user information to the row
document.write(users[i] + '<br>');
}
}
</script>
</body>
这将使您入门。一个学习PHP的好框架是CodeIgniter。 Laravel 是一个很棒的框架并且更受欢迎,但它添加了很多神奇的东西,使得常规 PHP 更难学习。
在你的“Users.php”
你应该首先包括“myPhp.php”
<?php include'myPhp.php' ?>
并像这样使用它:
var json = '<?php echo JSON_encode($rows); ?>';
var users = JSON.parse(json);
已解决。
当我 运行 Users.php 时 table 显示正确,但在通过执行最后包含 readfile('Users.php') 的 AddUsers.php 添加用户时显示错误它的。
问题实际上是在readfile(Users.php)
中添加Users.php.
readfile不执行Users.php,只显示其中的元素。因此 JSON_encode 从未被执行,并且 Users.php.
不知道用户我通过将 addUsers 中的 readfile('Users.php')
更改为 include 'Users.php';
Users.php代码变成了:
<?php include 'displayUsers.php'; ?>;
var users = <?php echo JSON_encode($rows); ?>;
displayUsers(users);
function displayUsers(users){...}