将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']."&lt;br&gt;"; 的输出是什么?当您检查页面源时,您会看到数据库中的任何数据吗?将该行更改为 print_r($row['name']); 并让我知道数据是否已获取并打印(在您的 html 页面源上),然后我们将着手解决问题 :) no @ali 数据库输出一切正常 $row['name'] 可以完美地获取数据,但问题是 js 如何显示 $row['name'] 的数组数据在角度 js 中 好酷,接下来将包括 Angular js 脚本,类似于 &lt;script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.js"&gt; 是的,我的错误很抱歉,但仍然将这个“[]”显示为输出@Ali &lt;?php echo htmlspecialchars(json_encode($row)); ?&gt; 的值是多少? 【参考方案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 源代码时看到了什么(我的意思是在浏览器中)。同样,当您在网络浏览器中打开页面时,当您查看源代码(在网络浏览器中)时,您会看到什么而不是 &lt;ul ng-init="names = &lt;?php echo htmlspecialchars(json_encode($row)); ?&gt;"&gt; ?应该是 &lt;ul ng-init="names = ....."&gt; 。 (.....) 是我有兴趣知道的那一点 :) 好的@Ali 没关系。但他们是我可以选择的另一种方式,可能就像使用 $http.get() 和成功函数一样,我不知道如何使用我是 angular js 的新手,也找不到任何确切的解决方案。如果你知道,请告诉我。 好的,它显示“null”,这意味着 $row 中没有出现任何内容,但 php 正在显示数据,但是当我将它传递给 angular js 时,它显示 null 。我一定是做错了什么。想不通。

以上是关于将php变量/数组数据传递给角度js的主要内容,如果未能解决你的问题,请参考以下文章

将数组数据传递给循环中的变量

角度将数据传递给变量以及该变量的使用

如何通过数组将数据传递给表格视图?

将类型安全的路线数据传递给角度 2 中的路线

微信小程序如何将接口获取的数据传递给自定义组件

试图通过管道将 C 中生成的数据传递给 Java 类。传递变量在java中出现空白而不是有数据