2017-01-15 2 views
0

Привет У меня возникла проблема с ответом вызова $ .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 
$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

Вы можете создать plunkr для этого ? –

+0

У json variable есть данные? –

+0

вы можете попробовать функцию успеха для метода post, которую он будет называть только после того, как данные поступают из сообщения, тогда вы можете назначить $ scope.contacts = result –

ответ

0

Используйте угловую $http Sevice как это ..

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); 
     } 
     }); 
} 

И HTML часть

<tbody> 
    <tr ng-repeat="contact in contacts"> 
    <td> {{contact['name']}} </td> 
    <td> {{contact['phone']}} </td> 
    </tr> 
</tbody> 
+0

Спасибо, работая !!!!! –

+0

Рад помочь вам. Наслаждайтесь и принимайте ответ. Удачи впереди. –

0

Проблема в том, что вы выходите из области углов при вызове $ .post. Это JQuery.

Решения:

1) использовать сервис HTTP $, что угловой обеспечивает

2) Вы можете назвать это в методе после ответа.

$timeout(function() { 
    $scope.contacts = json 
}); 

или вы можете позвонить $ объем. $ Применять