JQuery $ .post()响应

时间:2017-01-15 10:41:29

标签: javascript jquery json

嗨我的$ .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结束后为空。

有什么方法可以提取回复吗?

谢谢!

2 个答案:

答案 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>