2017-01-15 10 views
0

こんにちは私は$ .post呼び出しの応答に問題があります。

私は角度の付いたテーブルデータに挿入します。日付は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; 
} 

<?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は空です:

<tbody> 
    <tr ng-repeat="contact in contacts"> 
    <td> {{contact.name}} </td> 
    <td> {{contact.phone}} </td> 
    </tr> 
</tbody> 

私のPHPはある私がPHPを呼び出します。問題は$ .post()の応答を抽出することですが、jsonを機能させるために$。post()を空にしてみると、空になります。私は別の関数を呼び出して試してjsonを内部に渡しますが、関数setResponseの内部では動作しません.jsonは正しくありますが、関数$ scope.contactsの終了後に$ scope.contactsを設定しないでください。

応答を抽出する方法はありますか?

ありがとうございます!

+0

あなたはこのためにplunkrを作成することができます? –

+0

json変数にデータがありますか? –

+0

ポストメソッドの成功関数を試すことができます。ポストメソッドからデータがポストから来た後に呼び出されるだけです。$ scope.contacts = result –

答えて

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

とHTML部分

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

ありがとうございます!!!!! –

+0

お手伝いをしてうれしいです。喜んで答えを受け入れてください。 –

0

問題は、$ .postを呼び出すときにangleのスコープから離れることです。それはJQueryです。

ソリューション:

1)は、角度あなたがポスト応答方法でこれを呼び出すことができます

2)を提供$ HTTPサービスを使用します。

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

か、あなたは$スコープを呼び出すことができます。$