将数据绑定到Dom失败

时间:2016-06-05 13:48:01

标签: php angularjs json

我将response.data添加到$ scope.studentData,但仍然没有在DOM中显示,之前我得到angular.js:13550错误:[ngRepeat:dupes],所以我添加了跟踪$ index删除错误,但我仍然无法看到ng-repeat中的数据,每当我访问该部分模板视图时,2 Xhr调用是从php获取数据我会有所帮助,如果可以帮助我删除这些错误提前谢谢,新的是Angular请帮助。

app.controller("studentscontroller",function($scope,$http){
var st = [];
$http.get("php/studentdata.php")
.then(function(response){
//console.log(response.data);
$scope.studentData=response.data;
})
})

<tbody>
<tr ng-repeat="student in studentData track by $index">
<td>{{student.id}}</td>
<td>{{student.name}}</td>
</tr>
</tbody>


**php **
<?php

include("../php/dbconnect.php");
$datarcv = file_get_contents("php://input");
$data = json_decode($datarcv);
//$id = $data->id;
$query = "select * from student ";
$exe =mysqli_query($link,$query);
$send=array();
$len = mysqli_num_rows($exe);
//echo $len;
while($row = mysqli_fetch_array($exe))
{
$send = array('id'=>$row['sid'],'name'=>$row['sname']);
}
echo json_encode($send);
?
}

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试使用ng-repeat来显示数据,但它并未出现在视图中。 首先,确保您使用的是正确控制器的范围。要做到这一点,请尝试按ng-bind="studentData"在视图上显示数据。如果ng-bind工作,问题来自ng-repeat:要修复该问题,请使用$ scope。 model .studentData而不是$ scope.studentData。如果ng-bind仍然不起作用,那就意味着您使用了错误的控制器。

答案 1 :(得分:0)

GET请求没有正文,因此没有file_get_contents("php://input"),因为您没有验证它可能会在尝试json_decode()时抛出异常。

我的猜测是你的错误输出被返回然后传递到ng-repeat只是一个字符串...而不是你期望的数组。

此外,您在$send的每次迭代中覆盖while并且仅发送一个表示最后一行的对象...而不是表示所有行的对象数组。

通过更改:

修复阵列问题
$send = array('id'=>$row['sid'],'name'=>$row['sname']);

$send[] = array('id'=>$row['sid'],'name'=>$row['sname']);

此外,您应该使用浏览器开发工具来检查服务器实际发送给您的内容