嗨我的$ .post电话响应有问题。
我会在带有角度的表数据中插入。日期是php调用的响应。我打电话给php:
function AppCtrl($scope){
$scope.seeTable = function(){
$.post("/testJson.php", function(json){
//setResponse(json);
$scope.contacts = json;
});
$scope.seeThisTable = !$scope.seeThisTable;
};
//Not working
function setResponse(json){
$scope.contacts = json;
}
然后我在表格中插入:
<tbody>
<tr ng-repeat="contact in contacts">
<td> {{contact.name}} </td>
<td> {{contact.phone}} </td>
</tr>
</tbody>
我的php是:
<?php
$array = array(
0 => array('name' => 'Peter',
'phone' => '555-5552'),
1 => array('name' => 'Jhon',
'phone' => '555-1235'),
2 => array('name' => 'Ron',
'phone' => '555-5122'),
3 => array('name' => 'Harry',
'phone' => '555-5514')
);
echo json_encode($array);
?>
但是$ scope.contacts是空的。问题是提取$ .post()的响应但是当我试图让json函数$ .post()永远是空的。我尝试调用另一个函数并传递json但不工作,在函数setResponse内部json正确但不设置$ scope.contacts,在函数$ scope.contacts结束后为空。
有什么方法可以提取回复吗?
谢谢!
答案 0 :(得分:0)
问题是你在调用$ .post时会离开angular的范围。那就是JQuery。
解决方案:
1)使用angular提供的$ http服务
2)你可以在post post方法中调用它。
$timeout(function () {
$scope.contacts = json
});
或者您可以调用$ scope。$ apply
答案 1 :(得分:0)
使用像这样的角度$http
服务..
function AppCtrl($scope,$http){
$scope.seeTable = function(){
$http({
method:'GET',
url:'/testJson.php'
}).then(function success(data,status,xhr){
$scope.contacts = data.data;
//console.log(data);
},
function error(data,status,xhr){
alert(data.status);
}
});
}
AND HTML部分
<tbody>
<tr ng-repeat="contact in contacts">
<td> {{contact['name']}} </td>
<td> {{contact['phone']}} </td>
</tr>
</tbody>