将php变量/数组数据传递给角度js
Posted
技术标签:
【中文标题】将php变量/数组数据传递给角度js【英文标题】:Pass php variable/array data to angular js 【发布时间】:2015-09-22 13:53:12 【问题描述】:我正在使用 php 数据库连接,将“$row”作为一个数组,将名称作为一个字段存储在其中。但是经过大量搜索后,我知道如何在 angular js 中传递 php 变量 这是代码,我正在努力实现。我怎么可能是新手,您的帮助将不胜感激。
<?php
$con = mysqli_connect('localhost','root','','practice');
if (!$con)
die("couldnt connect". mysqli_error);
$q= "select * from test";
$result= $con->query($q);
if ($result->num_rows>0)
while ($row = $result->fetch_assoc())
echo $row['name']."<br>";
print_r($result);
echo json_encode($result);
?>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.js">
</head>
<body>
<ul ng-init="names = <?php echo htmlspecialchars(json_encode($row)); ?>">
<li ng-repeat="x in names">
<p>x.name</p>
</li>
</ul>
</body>
</html>
【问题讨论】:
您的脚本需要认真整理,甚至在您的 html 启动之前,您就已经在回显/打印很多东西了。如果纯粹是为了测试您的数据库结果,那么为什么要将它们与 标签混合在一起。无论如何echo $row['name']."<br>";
的输出是什么?当您检查页面源时,您会看到数据库中的任何数据吗?将该行更改为 print_r($row['name']);
并让我知道数据是否已获取并打印(在您的 html 页面源上),然后我们将着手解决问题 :)
no @ali 数据库输出一切正常 $row['name'] 可以完美地获取数据,但问题是 js 如何显示 $row['name'] 的数组数据在角度 js 中
好酷,接下来将包括 Angular js 脚本,类似于 <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.js">
是的,我的错误很抱歉,但仍然将这个“[]”显示为输出@Ali
<?php echo htmlspecialchars(json_encode($row)); ?>
的值是多少?
【参考方案1】:
我有类似的要求,以下对我有用。
data-ng-click="editField(product, '<?php echo $_SESSION["login_user"] ?>')"
【讨论】:
【参考方案2】:你的 php 代码需要一些改进,用这个代替那个:
$arr = array();
if ($result->num_rows>0)
while ($row = $result->fetch_assoc())
$arr[] = $row['name'] ;
然后将其回显为
<ul ng-init="names = <?php echo htmlspecialchars(json_encode($arr)); ?>">
【讨论】:
是的,这很容易。感谢您指出它帮助很大的错误谢谢【参考方案3】:如前所述,您需要将名称中的数据格式化为;
-
是有效的有效 JSON
提供一个字段 name,因为您正在循环中寻找它(ng-repeat)
因此,正如您在评论中提到的那样,目前分配给您的“名称”的值是“eden frank matt”。这需要更改为:
[
name: 'eden',
frank: 'eden',
matt: 'eden'
]
因此,当您检查 html 源代码时,我们应该有一个集合,可以说“人”,然后遍历其所有元素并指向他们的字段“名称”:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.js">
</script>
</head>
<body ng-app>
<ul ng-init="people = [name:'eden', name:'frank', name:'matt']">
<li ng-repeat="person in people">
<p>person.name</p>
</li>
</ul>
</body>
</html>
【讨论】:
我知道这是基本的东西,但是如果我在一个包含很多字段的数组中有很多数据库,那么需要 php 数据库连接,然后将其转换为 Angular js 数组会显示数据。我想用 angular js 实现 php。我知道我可以单独在 php 中做到这一点。但它在我的项目中是强制性的 我不建议手动编写 JSON @Sharefun。您必须以一种 vlid JSON 的方式解析数据库中的结果,其中包含您要进一步查找的字段。我的答案中的示例是当您在浏览器中查看 HTML 源代码而不是您的代码时 我已经问过你在检查 html 源代码时看到了什么(我的意思是在浏览器中)。同样,当您在网络浏览器中打开页面时,当您查看源代码(在网络浏览器中)时,您会看到什么而不是<ul ng-init="names = <?php echo htmlspecialchars(json_encode($row)); ?>">
?应该是 <ul ng-init="names = .....">
。 (.....) 是我有兴趣知道的那一点 :)
好的@Ali 没关系。但他们是我可以选择的另一种方式,可能就像使用 $http.get() 和成功函数一样,我不知道如何使用我是 angular js 的新手,也找不到任何确切的解决方案。如果你知道,请告诉我。
好的,它显示“null”,这意味着 $row 中没有出现任何内容,但 php 正在显示数据,但是当我将它传递给 angular js 时,它显示 null 。我一定是做错了什么。想不通。以上是关于将php变量/数组数据传递给角度js的主要内容,如果未能解决你的问题,请参考以下文章